您的位置:首页 > 其它

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

2017-08-31 19:26 459 查看
复习完了集合框架,再来看一下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()方法同样是一个实用的方法。

常用的方法就上面所示,还有很多方法以后碰到再找时间总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐