Collections:是java.util.*下的一个类,对集合进行操作
常用静态方法:
static Object max(Collection coll) 根据元素的自然顺序,返回给定 collection 的最大元素。
static Object min(Collection coll) 根据元素的自然顺序,返回给定 collection 的最小元素。
static void fill(List list, Object obj) 使用指定元素替换指定列表中的所有元素。
static void sort(List list):自然升序排序
static int binarySearch(List list, Object key) 使用二分搜索法搜索指定列表,以获得指定对象。
public static Comparator reverseOrder():可以**强行逆转**Collection的自然排序
public static Comparator reverseOrder(Comparator cmp):可以强行逆转指定比较器的顺序
static void shuffle(List list):对集合元素随机排序(可以用于骰子,扑克的发牌(见Random))
Arrays: java.util.*下面的类,用来操作数组
数组变集合:可以用集合的思想来操作数组,比较方便
public static List asList(Object… a)返回一个受指定数组支持的固定大小的列表(返回的是不可变的List(长度固定))。
注意:
1.将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的
2.如果数组中的元素都是对象,变成集合时,会将数组中的对象变成集合中的元素
如果数组中的元素都是基本数据类型,那么会将数组变成集合中的元素存在
如:
int[] a0 = {1,2,3};
List<int[]> list = Arrays.asList(a0);
System.out.println(list);//[[I@659e0bfd]
Integer[] a = {1,2,3};
List<Integer> arr = Arrays.asList(a);
System.out.println(arr);//[1, 2, 3]
集合变数组:为了限定对元素的操作
Collection.toArray() :
返回的数组长度如何确定:
如果指定数组的长度小于集合的size,方法内部会创建一个新数组,长度为size
如果指定数组长度大于集合的size,就不会创建数组了,使用传进来的数组,长度为size
String[] str = arr.toArray(new String[arr.size()]);
System.out.println(Arrays.toString(str));
Arrays.asList()和Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
高级for与iterator:
高级for:只能获取集合中的元素,不能对集合进行操作
Iterator:除了(**只能正向**)遍历,还可以进行remove操作(ListIterator可以**先正向迭代后反向迭代**,同时可以在遍历时
对集合进行增删改查)