`

Java中Collection与Collections的区别

    博客分类:
  • java
 
阅读更多

Java中Collection与Collections的区别

 

Collection是集合类的一个顶级接口,其直接继承接口有List与Set

而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

 

Collections提供方法

 

1) 排序(Sort)
使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。

列表中的所有元素都必须实现 Comparable 接口。

此列表内的所有元素都必须是使用指定比较器可相互比较的


double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.sort(list);
for (int i = 0; i < array.length; i++) {
   System.out.println(li.get(i));
}
//结果:112,111,23,456,231

 

备注:

implements Serializable, Comparable<Object>

@Override

public int compareTo(Object o) {

    return this.getDateline().compareTo(o.getDateline());

}

 

2) 混排(Shuffling)
混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List 。另外,在生成测试案例时,它也是十分有用的。
Collections.Shuffling(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.shuffle(list);
for (int i = 0; i < array.length; i++) {
   System.out.println(li.get(i));
}
//结果:112,111,23,456,231
3) 反转(Reverse)
       使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。
Collections.reverse(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections. reverse (list);
for (int i = 0; i < array.length; i++) {
   System.out.println(li.get(i));
}
//结果:231,456,23,111,112
4) 替换所以的元素(Fill)
使用指定元素替换指定列表中的所有元素。
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<str.length;j++){
li.add(new String(str[j]));
}
Collections.fill(li,"aaa");
for (int i = 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): 后面一个参数是目标列表 ,前一个是源列表
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {1131,333};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Collections.copy(list,li);
for (int i = 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)
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.min(list);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//结果:23
7) 返回Collections中最小元素(max)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的
Collections.max(list)
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.max(list);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//结果:456
8) lastIndexOfSubList
返回指定源列表中最后一次出现指定目标列表的起始位置
int count = Collections.lastIndexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Int locations = Collections. lastIndexOfSubList (list,li);
System.out.println(“===”+ locations);
//结果 3
9) IndexOfSubList
返回指定源列表中第一次出现指定目标列表的起始位置
int count = Collections.indexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Int locations = Collections.indexOfSubList(list,li);
System.out.println(“===”+ locations);
//结果 1
10) Rotate
根据指定的距离循环移动指定列表中的元素
Collections.rotate(list,-1);
如果是负数,则正向移动,正数则方向移动
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.rotate(list,-1);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//结果:111,23,456,231,112

 

 

    public static String collectionToString(Collection<?> collection) {

        return collectionToString(collection, ",");

    }

 

    public static String collectionToString(Collection<?> collection, String split) {

        if(isEmpty(collection)) {

            return "";

        } else {

            StringBuffer strb = new StringBuffer();

            Iterator var3 = collection.iterator();

 

            while(var3.hasNext()) {

                Object obj = var3.next();

                strb.append(obj.toString()).append(split);

            }

 

            strb.setLength(strb.length() - 1);

            return strb.toString();

        }

    }

分享到:
评论

相关推荐

    Collection与Collections,Array与Arrays的区别

    本文详细讲解了java中Collection与Collections,Array与Arrays的区别。

    浅谈Java中Collection和Collections的区别

    下面小编就为大家带来一篇浅谈Java中Collection和Collections的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java collection framework

    本书介绍了collect的前世今生,是初学者的一本较好的教程。

    Java SE编程入门教程 collection与collections(共7页).pptx

    Java SE编程入门教程 collection与collections(共7页).pptx Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE...

    了解Collection 和 Collections

    Collection 和 Collections区别 java.util.Collection 是一个集合接口(集合类的一个顶级接口)。 它提供了对集合对象进行基本操作的通用接口方法。 Collection接口在Java 类库中有很多具体的实现。 Collection接口...

    java基础之Collection与Collections和Array与Arrays的区别

    主要介绍了java基础之Collection与Collections和Array与Arrays的区别的相关资料,本文主要说明两者的区别以防大家混淆概念,需要的朋友可以参考下

    java的Collections教程

    有关java的collection的学习与应用,这课件挺不错的,欢迎下载。。

    Collections源码java-Java-Collection-:对Java的Collection框架源码阅读

    Collections 源码 java Java-Collection- 对Java的Collection框架源码阅读

    《JavaCollections》

    很详细的java collection 讲解,希望能够帮助大家.。。。。。

    Java Collections Apress

    Java Collections Apress This book describes how to use this Collections Framework. We'll also look at some of the common alternate frameworks available.

    Java Collections Framework

    2. Collections Framework 3 3. Collection interfaces and classes 5 4. Special collection implementations 22 5. Historical collection classes 25 6. Algorithm support 28 7. Usage issues 32 8. Alternative...

    APress Java Collections

    libraries introduced to deal with collections like the Generic Collection Library for Java (JGL) from ObjectSpace. Aside from rolling their own libraries or reusing those created by others, the ...

    集合(Collection).xmind

    集合总结, list , set , queue, collections的一些定义,方法,实现。

    Java Collections中的Fail Fast机制

    本文章主要抽取了 Java Collections Framework 中的Collection 接口、List 接口、AbstractCollection 抽象类、AbstractList 抽象类和具体的ArrayList 的实现纵向研究了Java Collections Framework 中的Fail Fast ...

    JAVA COLLECTION (APress)

    PDF文件+源代码 非常清晰,关于API和数据结构的书。 简洁明了,和不错的入门书籍。 找了很久。

    commons-collections-3.2.2-API文档-中英对照版.zip

    标签:collections、commons、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    commons-collections-3.2.2.jar

    包中对Java中的集合类进行了一定的补充,定义了一些全新的集合,当然也是实现了Collection接口的,比如Bag,BidiMap。同时拥有新版本的原有集合,比如FastArrayList。最后,更为重要的是一系列utils类,提供了我们...

    java-generics-collections:Java核心中的泛型和集合

    在有关Java核心的系列文章中,我们将继续学习2个新内容,即Generics和Collection,它们是Java中非常流行的对象。 泛型格式化参数化数据类型,以便我们可以将类,接口或方法用于许多不同的数据类型。 集合只是具有...

    Data Structures and the Java Collections Framework, 3rd Edition

    Data Structures and the Java Collections Framework, 3rd Edition

    java_ms.rar_Math Class_java collection

     第六,Collection 和 Collections的区别。  你千万别说一个是单数一个是复数。   第七,什么时候用assert。  API级的技术人员有可能会问这个。   第八,GC是什么? 为什么要有GC?  基础。   第九,...

Global site tag (gtag.js) - Google Analytics