Collections类常用方法总结

1. sort

对集合进行排序

1 public static <T extends Comparable<? super T>> void sort(List<T> list)
2
3 public static <T> void sort(List<T> list,
4                             Comparator<? super T> c)

  在使用List时想根据List中存储对象的某一字段进行排序,那么我们要用到Collections.sort方法对list排序,用Collections.sort方法对list排序有两种方法:

  • 第一种是list中的对象实现Comparable接口;
  • 第二种方法是根据Collections.sort重载方法来实现。

示例如下:

 1 import java.util.ArrayList;   
 2 import java.util.Collections;   
 3 import java.util.Comparator;
 4 import java.util.List;
 5
 6 public class SortTest {
 7     public static void main(String[] args) {
 8         List<String> lists = new ArrayList<String>();
 9         List<A> list = new ArrayList<A>();
10         List<B> listB = new ArrayList<B>();
11         lists.add("5");
12         lists.add("2");
13         ists.add("9");  //lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序
14         Collections.sort(lists);
15
16         A aa = new A();
17         a.setName("aa");
18         aa.setOrder(1);
19         A bb = new A();
20         bb.setName("bb");
21         bb.setOrder(2);
22         list.add(bb);
23         list.add(aa);   //list中的对象A实现Comparable接口
24         Collections.sort(list);
25
26         B ab = new B(); 
27         ab.setName("ab");
28         ab.setOrder("1");
29         B ba = new B();
30         ba.setName("ba");
31         ba.setOrder("2");
32         listB.add(ba);
33         listB.add(ab);  //根据Collections.sort重载方法来实现
34         Collections.sort(listB,new Comparator<B>(){
35             @Override
36             public int compare(B b1, B b2) {
37                 return b1.getOrder().compareTo(b2.getOrder());
38             }
39
40         }); 
41
42         System.out.println(lists);
43         System.out.println(list);
44         System.out.println(listB);
45     }
46 }
47   
48 class A implements Comparable<A>{
49     private String name;
50     private Integer order;
51     public String getName() {
52         return name;
53     }
54     public void setName(String name) {
55         this.name = name;
56     } 
57     public Integer getOrder() {
58         return order;
59     } 
60     public void setOrder(Integer order) {
61         this.order = order;
62     } 
63     @Override
64     public String toString() { 
65         return "name is "+name+" order is "+order;
66     } 
67     @Override
68     public int compareTo(A a) {
69         return this.order.compareTo(a.getOrder());
70     } 
71 } 
72  
73 class B{
74     private String name;
75     private String order;
76     public String getName() {
77         return name;
78     } 
79     public void setName(String name) {
80         this.name = name;
81     }
82     public String getOrder() {
83         return order;
84     }
85     public void setOrder(String order) {
86         this.order = order;
87     } 
88     @Override 
89     public String toString() {
90         return "name is "+name+" order is "+order;
91     } 
92 }

打印的结果为:

[2, 5, 9]
[name is aa order is 1, name is bb order is 2]
[name is ab order is 1, name is ba order is 2] 

2. shuffle

对集合进行随机排序

1 public static void shuffle(List<?> list)
2
3 public static void shuffle(List<?> list, Random rnd)

示例:

 1 public class Practice {
 2     public static void main(String[] args){
 3         List c = new ArrayList();
 4         c.add("w");
 5         c.add("o");
 6         c.add("r");
 7         c.add("l");
 8         c.add("d");
 9         System.out.println(c);
10         Collections.shuffle(c);
11         System.out.println(c);
12         Collections.shuffle(c);
13         System.out.println(c);
14     }
15 }

运行结果为:[w, o, r, l, d]
[l, d, w, o, r]
[o, r, d, l, w]

3. binarySearch

查找指定集合中的元素,返回所查找元素的索引

1 public static <T> int binarySearch(List<? extends Comparable<? super T>> list,
2                                    T key)
3
4 public static <T> int binarySearch(List<? extends T> list,
5                                    T key,
6                                    Comparator<? super T> c)

示例:

 1 public class Practice {
 2     public static void main(String[] args){
 3         List c = new ArrayList();
 4         c.add("w");
 5         c.add("o");
 6         c.add("r");
 7         c.add("l");
 8         c.add("d");
 9         System.out.println(c);
10         int m = Collections.binarySearch(c, "o");
11         System.out.println(m);
12     }
13 }

运行结果为:[w, o, r, l, d]
注意:若查找的元素不存在,示例中的n即表示该元素最有可能存在的位置的索引。

4. max

1 public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
2
3 public static <T> T max(Collection<? extends T> coll,
4                         Comparator<? super T> comp)

前者采用Collection内含自然比较法,后者采用Comparator进行比较.

5. min

1 public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
2
3 public static <T> T min(Collection<? extends T> coll,
4                         Comparator<? super T> comp)

前者采用Collection内含自然比较法,后者采用Comparator进行比较。

6. indexOfSubList

查找subList在list中首次出现位置的索引

1 public static int indexOfSubList(List<?> source,
2                                  List<?> target)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List list = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(list);
5     List subList = Arrays.asList("three four five six".split(" "));
6     System.out.println(Collections.indexOfSubList(list, subList));
7   }
8 }

运行结果为:[one, two, three, four, five, six, siven]

7. lastIndexOfSubList

使用与上例方法的使用相同,在此就不做介绍了。

8. replaceAll

替换批定元素为某元素,若要替换的值存在刚返回true,反之返回false

1 public static <T> boolean replaceAll(List<T> list,
2                                      T oldVal,
3                                      T newVal)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List list = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(list);
5     List subList = Arrays.asList("three four five six".split(" "));
6     System.out.println(Collections.replaceAll(list, "siven", "siven eight"));
7     System.out.println(list);
8   }
9 }

运行结果为:
[one, two, three, four, five, six, siven]
true
[one, two, three, four, five, six, siven eight]

9. reverse()

反转集合中元素的顺序

public static void reverse(List<?> list)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List list = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(list);
5     Collections.reverse(list);
6     System.out.println(list);
7   }
8 }

运行结果为:
[one, two, three, four, five, six, siven]
[siven, six, five, four, three, two, one]

10. rotate

集合中的元素向后移m个位置,在后面被遮盖的元素循环到前面来

1 public static void rotate(List<?> list,
2                           int distance)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List list = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(list);
5     Collections.rotate(list, 1);
6     System.out.println(list);
7   }
8 }

运行结果为:
[one, two, three, four, five, six, siven]
[siven, one, two, three, four, five, six]

11. copy

将集合n中的元素全部复制到m中,并且覆盖相应索引的元素

1 public static <T> void copy(List<? super T> dest,
2                             List<? extends T> src)

示例:

 1 public class Practice {
 2   public static void main(String[] args){
 3     List m = Arrays.asList("one two three four five six siven".split(" "));
 4     System.out.println(m);
 5     List n = Arrays.asList("我 是 复制过来的哈".split(" "));
 6     System.out.println(n);
 7     Collections.copy(m,n);
 8     System.out.println(m);
 9   }
10 }

运行结果为:[one, two, three, four, five, six, siven]
[我, 是, 复制过来的哈]
[我, 是, 复制过来的哈, four, five, six, siven]

12. swap

交换集合中指定元素索引的位置

1 public static void swap(List<?> list,
2                         int i,
3                         int j)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List m = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(m);
5     Collections.swap(m, 2, 3);
6     System.out.println(m);
7   }
8 }

运行结果为:
[one, two, three, four, five, six, siven]
[one, two, four, three, five, six, siven]

13. fill

用对象o替换集合list中的所有元素

1 public static <T> void fill(List<? super T> list,
2                             T obj)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     List m = Arrays.asList("one two three four five six siven".split(" "));
4     System.out.println(m);
5     Collections.fill(m, "haha52T25xixi");
6     System.out.println(m);
7   }
8 }

运行结果为:
[one, two, three, four, five, six, siven]
[haha52T25xixi, haha52T25xixi, haha52T25xixi, haha52T25xixi, haha52T25xixi, haha52T25xixi, haha52T25xixi]

14. nCopies

返回大小为n的List,List不可改变,其中的所有引用都指向o

1 public static <T> List<T> nCopies(int n,
2                                   T o)

示例:

1 public class Practice {
2   public static void main(String[] args){
3     System.out.println(Collections.nCopies(5, "haha"));
4   }
5 }

运行结果为:
[haha, haha, haha, haha, haha]

参考:http://www.360doc.com/content/14/0829/10/15242507_405537400.shtml

时间: 2024-10-22 11:37:14

Collections类常用方法总结的相关文章

Collections 工具类常用方法

所有方法都是静态 static 的 public static <T> void sort(List<T> list) ####sort(list) 对应list 集合排序 public static <T> int binarySearch(List<?> list,T key) 二分查找法 public static <T> T max(Collection<?> coll) 最大值最小值 public static void r

I学霸官方免费教程三十五:Java集合框架之Collection接口和Collections类

Collection接口 Collection接口是List和Set接口的父接口,其中主要定义了一些集合基本操作的方法,包括与Iterator之间的关系List  extends  CollectionArrayList  implements  ListLinkedList  implements  ListVector  implements  ListSet  extends  CollectionHashSet  implements  SetSortedSet  extends  Se

Colletions工具类常用方法

Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合 void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list)//按自然排序的升序排序 void sort(List list, Comparator c)//定制排序,由Comparator控制排序逻辑 void swap(List list, int i ,

Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)

一.Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法 shuffle(List); 随机排列 void reverse(List); 逆序排列(Linked效率较高) copy(); 复制集合, 前提是size()相同(长度, 和容量的区别) fill(List, Object);使用某个对象填充整个List binarySearch()

Collection接口和Collections类的简单区别和讲解

这里仅仅进行一些简单的比较,如果你想要更加详细的信息话,请自己百度. 1.Collection: 是集合类的上层接口.本身是一个Interface,里面包含了一些集合的基本操作. Collection接口时Set接口和List接口的父接口 里面的常用操作有如下内容: 2.Collections Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作. 最根本的是Collections是一个类哦. 下面是Collections类中的常用操作: 好吧,就先到这里

Paint类常用方法

Paint类常用方法 void  setARGB(int a, int r, int g, int b)  设置Paint对象颜色,参数一为alpha透明通道 void  setAlpha(int a)  设置alpha不透明度,范围为0~255 void  setAntiAlias(boolean aa)  //是否抗锯齿 void  setColor(int color)  //设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义 . void  setFakeBold

Comparable、Iterator接口和Collections类的实现方法

Comparable接口: 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法. 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序. 方法:int compareTo(T o) 比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数. Collections类: List的常用算法: ArrayList默认长度(siz

java-String类常用方法解释笔记

参考注释即可. 1 /*H4ckSo1di3r 2015年2月4日 下午11:55:07*/ 2 package Demo; 3 4 public class TestStringClass_测试String类 { 5 6 7 public static void main(String[] args) { 8 9 // ================================================== 10 // 1.String类常用构造方法 11 //String() 无

【Java】利用Collections类下的shuffle洗牌方法改进在一定的范围内产生不重复的随机数

上次在<[Java]在一定的范围内产生不同的随机数>(点击打开链接)上所提到的方法,尽管已经解决了一定范围内产生不同随机数的问题,运行速度已经可以的,至少不会弄很久都弄不好,其实利用Collections类下的shuffle方法思想可以更清晰.速度更快地在一定的范围内产生不同的随机数. Collections类下的shuffle方法是可以随机打乱一个数组中的元素的程序,也叫做洗牌方法. 有这个方法,配合我在<[Java]Java中的Collections类--Java中升级版的数据结构&