您的位置:首页 > 其它

Collection和Collections的区别

2012-11-13 09:29 260 查看
Collection是个java.util下的接口,它是各种集合结构的父接口。List,Set,Map是否继承自Collection接口?List,Set是Map不是.

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection层次结构中的根接口。Collection表示一组对象,这些对象也称为collection的元素。一些collection允许有重复的元素,而另一些则不允许。一些collection是有序的,而另一些则是无序的。JDK不提供此接口的任何直接实现:它提供更具体的子接口(如Set和List)实现。此接口通常用来传递collection,并在需要最大普遍性的地方操作这些collection。Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
collections此类完全由在collection上进行操作或返回collection的静态方法组成。它包含在collection上操作的多态算法,即“包装器”,包装器返回由指定collection支持的新collection,以及少数其他内容。如果为此类的方法所提供的collection或类对象为null,则这些方法都会抛出NullPointerException。
Java代码

importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;

publicclassTestCollections{

publicstaticvoidmain(Stringargs[]){
//注意List是实现Collection接口的
Listlist=newArrayList();
doublearray[]={112,111,23,456,231};
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.sort(list);
for(inti=0;i<array.length;i++){
System.out.println(list.get(i));
}
//结果:23.0111.0112.0231.0456.0
}
}
Bytheway
ArrayList和Vector的区别。
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
HashMap和Hashtable的区别
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
Collections是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。1)排序(Sort)
使用sort方法可以根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须实现Comparable接口。此列表内的所有元素都必须是使用指定比较器可相互比较的
doublearray[]={112,111,23,456,231};
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.sort(list);
for(inti=0;i<array.length;i++){
System.out.println(li.get(i));
}
//结果:112,111,23,456,231
2)混排(Shuffling)
混排算法所做的正好与sort相反:它打乱在一个List中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该List,这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的Card对象的一个List。另外,在生成测试案例时,它也是十分有用的。
Collections.Shuffling(list)
doublearray[]={112,111,23,456,231};
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.shuffle(list);
for(inti=0;i<array.length;i++){
System.out.println(li.get(i));
}
//结果:112,111,23,456,231
3)反转(Reverse)
使用Reverse方法可以根据元素的自然顺序对指定列表按降序进行排序。
Collections.reverse(list)
doublearray[]={112,111,23,456,231};
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.reverse(list);
for(inti=0;i<array.length;i++){
System.out.println(li.get(i));
}
//结果:231,456,23,111,112
4)替换所以的元素(Fill)
使用指定元素替换指定列表中的所有元素。
Stringstr[]={"dd","aa","bb","cc","ee"};
for(intj=0;j<str.length;j++){
li.add(newString(str[j]));
}
Collections.fill(li,"aaa");
for(inti=0;i<li.size();i++){
System.out.println("list["+i+"]="+li.get(i));

}
//结果:aaa,aaa,aaa,aaa,aaa

5)拷贝(Copy)
用两个参数,一个目标List和一个源List,将源的元素拷贝到目标,并覆盖它的内容。目标List至少与源一样长。如果它更长,则在目标List中的剩余元素不受影响。
Collections.copy(list,li):后面一个参数是目标列表,前一个是源列表
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
Listli=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
doublearr[]={1131,333};
Stringstr[]={"dd","aa","bb","cc","ee"};
for(intj=0;j<arr.length;j++){
li.add(newDouble(arr[j]));
}
Collections.copy(list,li);
for(inti=0;i<list.size();i++){
System.out.println("list["+i+"]="+list.get(i));
}
//结果:1131,333,23,456,231
6)返回Collections中最小元素(min)
根据指定比较器产生的顺序,返回给定collection的最小元素。collection中的所有元素都必须是通过指定比较器可相互比较的
Collections.min(list)
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.min(list);
for(inti=0;i<list.size();i++){
System.out.println("list["+i+"]="+list.get(i));
}
//结果:23
7)返回Collections中最小元素(max)
根据指定比较器产生的顺序,返回给定collection的最大元素。collection中的所有元素都必须是通过指定比较器可相互比较的
Collections.max(list)
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.max(list);
for(inti=0;i<list.size();i++){
System.out.println("list["+i+"]="+list.get(i));
}
//结果:456
8)lastIndexOfSubList
返回指定源列表中最后一次出现指定目标列表的起始位置
intcount=Collections.lastIndexOfSubList(list,li);
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
Listli=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
doublearr[]={111};
Stringstr[]={"dd","aa","bb","cc","ee"};
for(intj=0;j<arr.length;j++){
li.add(newDouble(arr[j]));
}
Intlocations=Collections.lastIndexOfSubList(list,li);
System.out.println(“===”+locations);
//结果3
9)IndexOfSubList
返回指定源列表中第一次出现指定目标列表的起始位置
intcount=Collections.indexOfSubList(list,li);
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
Listli=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
doublearr[]={111};
Stringstr[]={"dd","aa","bb","cc","ee"};
for(intj=0;j<arr.length;j++){
li.add(newDouble(arr[j]));
}
Intlocations=Collections.indexOfSubList(list,li);
System.out.println(“===”+locations);
//结果1
10)Rotate
根据指定的距离循环移动指定列表中的元素
Collections.rotate(list,-1);
如果是负数,则正向移动,正数则方向移动
doublearray[]={112,111,23,456,231};
Listlist=newArrayList();
for(inti=0;i<array.length;i++){
list.add(newDouble(array[i]));
}
Collections.rotate(list,-1);
for(inti=0;i<list.size();i++){
System.out.println("list["+i+"]="+list.get(i));
}
//结果:111,23,456,231,112
本文出自“IT-人生精彩”博客,请务必保留此出处http://mrwlh.blog.51cto.com/2238823/1058554
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: