【无标题】

发布于:2025-02-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

一.在Java中,集合(如ListSet等)和数组可以相互转换。以下是常见的转换方式:

1. 数组转集合

1.1 使用 Arrays.asList() 方法

Arrays.asList() 方法可以将数组转换为 List 集合。注意,返回的 List 是一个固定大小的列表,不能进行添加或删除操作。

import java.util.Arrays;
import java.util.List;

public class ArrayToListExample {
    public static void main(String[] args) {
        String[] array = {"apple", "banana", "cherry"};
        List<String> list = Arrays.asList(array);
        
        System.out.println(list);  // 输出: [apple, banana, cherry]
    }
}
1.2 使用 Collections.addAll() 方法

如果你需要一个可变的集合,可以使用 Collections.addAll() 方法将数组元素添加到集合中。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ArrayToMutableListExample {
    public static void main(String[] args) {
        String[] array = {"apple", "banana", "cherry"};
        List<String> list = new ArrayList<>();
        Collections.addAll(list, array);
        
        System.out.println(list);  // 输出: [apple, banana, cherry]
    }
}

2. 集合转数组

2.1 使用 toArray() 方法

集合类(如 List)提供了 toArray() 方法,可以将集合转换为数组。

import java.util.ArrayList;
import java.util.List;

public class ListToArrayExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        String[] array = list.toArray(new String[0]);
        
        for (String fruit : array) {
            System.out.println(fruit);  // 输出: apple, banana, cherry
        }
    }
}
  1. toArray(T[] a) 方法的作用
    toArray(T[] a) 方法的作用是将集合中的元素复制到一个数组中。它的参数是一个数组(T[] a),这个数组的作用是:

如果传入的数组长度足够大(即数组的长度大于或等于集合的大小),则集合的元素会被复制到这个数组中。

如果传入的数组长度不够(即数组的长度小于集合的大小),则会创建一个新的数组,并将集合的元素复制到新数组中。

  1. new String[0] 的含义
    new String[0] 创建了一个长度为 0 的 String 数组。

传入一个长度为 0 的数组,是为了告诉 toArray() 方法:“我不确定数组的长度,请根据集合的大小自动创建一个合适长度的数组。”

  1. 为什么用 new String[0]?
    简洁性:new String[0] 是一种简洁的写法,避免了手动计算集合的大小。

性能:虽然传入一个长度为 0 的数组会触发 toArray() 方法创建一个新数组,但现代 JVM 对这种操作进行了优化,性能开销很小。

通用性:无论集合的大小是多少,new String[0] 都能正常工作。

2.2 使用 toArray(T[] a) 方法

toArray(T[] a) 方法允许你指定返回的数组类型。如果传入的数组长度足够,则使用该数组;否则,会创建一个新的数组。

import java.util.ArrayList;
import java.util.List;

public class ListToArrayExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        
        String[] array = list.toArray(new String[list.size()]);
        
        for (String fruit : array) {
            System.out.println(fruit);  // 输出: apple, banana, cherry
        }
    }
}

3. 注意事项

  • 数组转集合Arrays.asList() 返回的 List 是一个固定大小的列表,不能进行添加或删除操作。如果需要可变集合,可以使用 Collections.addAll() 方法。
  • 集合转数组toArray() 方法返回的数组是一个新数组,对数组的修改不会影响原集合。

通过这些方法,可以方便地在Java中实现集合和数组之间的转换。

二.Collections 和 Arrays 是 Java 中两个非常实用的工具类,它们提供了许多方便的方法来操作集合和数组。以下是一些常见的用法示例:

Collections 工具类的用法
排序
使用 Collections.sort 方法可以对列表进行排序。如果列表中的元素实现了 Comparable 接口,可以直接排序;否则,可以提供一个 Comparator。

import java.util.*;
 
public class CollectionsExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 2);
        Collections.sort(numbers);
        System.out.println(numbers); // 输出: [1, 2, 3, 5, 8]
    }
}

查找最小值和最大值
使用 Collections.min 和 Collections.max 方法可以查找集合中的最小值和最大值。

import java.util.*;
 
public class CollectionsMinMaxExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 3, 8, 1, 2);
        Integer min = Collections.min(numbers);
        Integer max = Collections.max(numbers);
        System.out.println("Min: " + min); // 输出: Min: 1
        System.out.println("Max: " + max); // 输出: Max: 8
    }
}

反转列表
使用 Collections.reverse 方法可以反转列表中的元素顺序。

import java.util.*;
 
public class CollectionsReverseExample {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry");
        Collections.reverse(words);
        System.out.println(words); // 输出: [cherry, banana, apple]
    }
}

填充集合
使用 Collections.fill 方法可以用指定的值填充列表中的所有元素。

import java.util.*;
 
public class CollectionsFillExample {
    public static void main(String[] args) {
        List<String> words = new ArrayList<>(Arrays.asList("a", "b", "c"));
        Collections.fill(words, "x");
        System.out.println(words); // 输出: [x, x, x]
    }
}

Arrays 工具类的用法
排序
使用 Arrays.sort 方法可以对数组进行排序。

import java.util.Arrays;
 
public class ArraysSortExample {
    public static void main(String[] args) {
        Integer[] numbers = {5, 3, 8, 1, 2};
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 5, 8]
    }
}

查找
使用 Arrays.binarySearch 方法可以在已排序的数组中查找元素。

import java.util.Arrays;
 
public class ArraysBinarySearchExample {
    public static void main(String[] args) {
        Integer[] numbers = {1, 2, 3, 5, 8};
        int index = Arrays.binarySearch(numbers, 5);
        System.out.println("Index of 5: " + index); // 输出: Index of 5: 3
    }
}

复制数组
使用 Arrays.copyOf 方法可以复制数组。

import java.util.Arrays;
 
public class ArraysCopyExample {
    public static void main(String[] args) {
        Integer[] original = {1, 2, 3};
        Integer[] copy = Arrays.copyOf(original, original.length);
        System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3]
    }
}

数组转换为列表
使用 Arrays.asList 方法可以将数组转换为列表。

import java.util.Arrays;
import java.util.List;
 
public class ArraysToListExample {
    public static void main(String[] args) {
        String[] fruits = {"apple", "banana", "cherry"};
        List<String> fruitList = Arrays.asList(fruits);
        System.out.println(fruitList); // 输出: [apple, banana, cherry]
    }
}