您的位置:首页 > 理论基础 > 数据结构算法

Java数据结构与算法之数据结构-逻辑结构-集合(四)------集合之Collection接口

2017-10-10 17:32 507 查看
Java集合类的基本概述:

Java集合中主要有两个大的接口:Collection接口和Map接口,Collection是元素集合,Map是键值对集合;其中List和Set继承了Collection接口,List是有序元素集合,Set是无序元素集合;而ArrayList和LinkedList实现了List接口,HashSet实现了Set接口这两个都比较常用;HashMap和HashTable实现了Map接口并且HashTable是线程安全的,但是HashMap性能更好。这一节中主要探究Java的Collection集合接口的原理和使用。



一、Collection接口的API和源码解析:

1、Collection的API结构:



图1:
图1显示的是Collection接口在Java8中接口和实现类的层级关系。可以说Collection是java集合接口的顶层接口但是这个接口还继承了父接口Iterable接口(继承了
Iterable接口之后Collection接口的子接口和子接口的实现类都可以使用Iterable接口中定义的Iterator方法用于集合的foreach迭代)。Collection接口拥有众多的子接口,
其中在开发中使用众多的有List接口,Queue接口Set接口等。

2、Collection的源码解析:

该接口在Java.util包下。主要拥有如下的一些方法:



图2:
除去继承于Iterable的方法之外的所有方法都是Collection接口拥有的方法。以下对Collection的部分方法扽别作介绍:

①、  boolean add(E e); 向集合中添加一个元素;

②、 boolean remove(Object o);从集合中删除一个元素;

③、 boolean containsAll(Collection<?> c); 假如该集合中包含指定集合的所有元素则返回true;

④、 boolean containsAll(Collection<?> c); 向集合中添加指定集合的所有元素;

⑤、 boolean removeAll(Collection<?> c); 从集合中删除指定的所有元素;

⑥、 boolean retainAll(Collection<?> c); 保留指定集合中的元素;

⑦、  void clear(); 清空集合中的所有元素;

具体的含义和操作技巧可以在实战中去练习。

注意:

Java.util.Collection是java集合类的一个顶级接口,其提供了对java集合对象进行基本操作的通用接口方法。Collection接口再java类库中有很多具体的实现。

二、Java中Collection和Collections的区别

如上文阐述Collection是集合类的一个上层接口,顶一个集合框架的共同方法。然而Collections是一个操作集合类的一个工具类(帮助类)。其中提供了众多的静态方法
用于对集合类进行排序,搜索以及线程安全等操作。

集合工具类Collections的简单学习:这个工具类位于:java.util.Collections包下。

1、工具类中定义的静态常量:

private static final int BINARYSEARCH_THRESHOLD = 5000;
private static final int REVERSE_THRESHOLD = 18;
private static final int SHUFFLE_THRESHOLD = 5;
private static final int FILL_THRESHOLD = 25;
private static final int ROTATE_THRESHOLD = 100;
private static final int COPY_THRESHOLD = 10;
private static final int REPLACEALL_THRESHOLD = 11;
private static final int INDEXOFSUBLIST_THRESHOLD = 35;

2、 还有众多的方法:



图3

3、 集合工具类的应用例子:

简单的实现一个使用Collections进行List排序的例子:

@Test
public void testCollections(){
//生成一个随机数组
List<Integer> list = new ArrayList<Integer>();

Random rand = new Random();

//生成一个随机数组
for(int i = 0; i<100;i++){
list.add(rand.nextInt(500));
}

//打印随机数组的值
System.out.println("未排序之前的数组: ");
for(Integer in: list){
System.out.print(in+",");
}
System.out.println();
System.out.println();

//调用Collections工具类对List进行排序
Collections.sort(list);

//对排序之后的数据打印
//打印随机数组的值
System.out.println("排序之后的数组: ");
for(Integer in: list){
System.out.print(in+",");
}
}
排序的结果为:

未排序之前的数组:
75,164,356,330,90,210,349,269,44,392,205,289,342,415,96,292,148,313,153,271,451,459,97,87,13,467,407,329,84,376,314,7,319,304,71,417,325,400,61,83,416,466,363,372,121,343,173,60,416,297,399,343,214,492,360,333,271,162,158,238,14,265,240,339,399,268,73,315,225,70,335,417,85,174,77,163,91,41,457,116,160,343,27,180,245,316,14,100,84,8,244,77,73,409,271,81,458,256,35,213,

排序之后的数组:
7,8,13,14,14,27,35,41,44,60,61,70,71,73,73,75,77,77,81,83,84,84,85,87,90,91,96,97,100,116,121,148,153,158,160,162,163,164,173,174,180,205,210,213,214,225,238,240,244,245,256,265,268,269,271,271,271,289,292,297,304,313,314,315,316,319,325,329,330,333,335,339,342,343,343,343,349,356,360,363,372,376,392,399,399,400,407,409,415,416,416,417,417,451,457,458,459,466,467,492,

三、总结:

Collection只是一个Java众多接口的一个简单接口而已,因此知识点也相对简单。之所以重视它,就是因为Java集合就是以其作为扩展的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐