(集合框架)collections工具类的常用方法

xiaoxiao2021-02-28  72

复习完了集合框架,再来看一下collections工具类的一些基本用法,更加完善集合框架的知识库。

1、什么是Collections呢?

        Collections是对集合框架的一个工具类。它里边的方法都是静态的,不需要创建对象。并未封装特有数据。在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二分查找,随机排序等。

Collections:它的出现给集合操作提供了更多的功能。这个类不需要创建对象,内部提供的都是静态方法,所以用起来很方便。

这里注意的是,Collections和Collection是不同的。

那么Collection和Collections的区别?

(1)Collection:是单列集合的顶层接口,有子接口List和Set。

(2)Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

Collecitons中的常见方法 public static <T> void sort(List<T> list) public static <T> int binarySearch(List<?> list,T key) public static <T> T max(Collection<?> coll) public static void reverse(List<?> list) public static void shuffle(List<?> list)

下面举一些例子简单说明一下:

例子1:

public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("d"); list.add("c"); list.add("a"); list.add("b"); System.out.println(list); Collections.sort(list); System.out.println(list); } 得到的结果为:

[d, c, a, b] [a, b, c, d]

这个方法是list集合进行元素的自然顺序排序,当然还可以用方法Collections.sort(list,new ComparatorByLen()),根据指定比较器排序。

例子2:

ArrayList<String> list = new ArrayList<String>(); list.add("d"); list.add("c"); list.add("a"); list.add("b"); list.add("e"); System.out.println(list); System.out.println(Collections.binarySearch(list,"a")); System.out.println(Collections.binarySearch(list, "b")); System.out.println(Collections.binarySearch(list, "c")); System.out.println(Collections.binarySearch(list, "d")); System.out.println(Collections.binarySearch(list, "e")); 得到的结果是:

[d, c, a, b, e] 2 3 -5 -5 4

为什么会出现负数呢?因为在二分查找中,集合中的元素必须是根据列表元素的自然顺序对列表进行升序排序,如果不是的话,得到的结果不确定,API中说

参数: a - 要搜索的数组 key - 要搜索的值 返回: 如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 插入点 被定义为将键插入数组的那一点:即第一个大于此键的元素索引,如果数组中的所有元素都小于指定的键,则为 a.length。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。

所以,二分查找这个方法必须是对排序过后的集合使用。

ArrayList<String> list = new ArrayList<String>(); list.add("d"); list.add("c"); list.add("a"); list.add("b"); list.add("e"); System.out.println(list); Collections.sort(list); System.out.println(Collections.binarySearch(list,"a")); System.out.println(Collections.binarySearch(list, "b")); System.out.println(Collections.binarySearch(list, "c")); System.out.println(Collections.binarySearch(list, "d")); System.out.println(Collections.binarySearch(list, "e"));这下得出的结果就为:

[d, c, a, b, e] 0 1 2 3 4

例子3:

ArrayList<String> list = new ArrayList<String>(); list.add("d"); list.add("c"); list.add("a"); list.add("b"); list.add("e"); System.out.println(Collections.max(list)); System.out.println(Collections.min(list));

得到的结果为:

e

a

max()方法是找到list集合中的最大值,min()是找到list集合中的最小值。

例子4:

ArrayList<String> list = new ArrayList<String>(); list.add("d"); list.add("c"); list.add("a"); list.add("b"); list.add("e"); System.out.println(list); Collections.reverse(list); System.out.println(list); 得到的结果是:

[d, c, a, b, e] [e, b, a, c, d]

reverse()是翻转list集合的方法。

还有一个方法shuffle()方法,是集合中的元素随意排序。

同样是上面的list:

Collections.shuffle(list); System.out.println(list); Collections.shuffle(list); System.out.println(list); Collections.shuffle(list); System.out.println(list); 得到的结果是:

[d, c, b, a, e] [d, b, a, e, c] [c, d, e, a, b]

三次的结果都不一样,证明是随意排序的。

同样是一开始的list:

System.out.println(list); Collections.swap(list, 0, 3); System.out.println(list);得到结果是:

[d, c, a, b, e] [b, c, a, d, e]

得到的结论是第一个位置的元素和第四个位置的元素位置互换了。swap()方法同样是一个实用的方法。

常用的方法就上面所示,还有很多方法以后碰到再找时间总结。

转载请注明原文地址: https://www.6miu.com/read-54937.html

最新回复(0)