Collections类对于java集合的学习至关重要,这里简单收录了Collections类的基本方法和详解,下面先给出汇总列表
Collections类常用方法 | ||
分类 | 方法 | 用法 |
排序操作 | sort(Collection); sort(Collection,Comparator c) | 自然排序 按比较器进行排序 |
reverse(); | 反转集合中的元素的顺序 | |
shuffle(Collection) | 对集合进行随机排序 | |
swap(List list,int i,int j) | 交换集合中索引 i 和 j 处的元素 | |
rotate(List list,int m) | list中元素移位m,m>0右移,m<0左移,移除的数往前补位 | |
查找和替换 | binarySearch(Collection , Object) | 查找集合中元素,返回索引 |
min(Collection) min(Collection Comparator) | 自然排序找最小值 比较器找最小值 | |
max(Collection) max(Collection Comparator) | 自然排序找最大值 比较器找最大值 | |
fill(List list,Object o) | 将list集合中所有元素赋值为o | |
replaceAll(List list,Object old,Object new) | 用new替代集合中的old,如果集合中存在old,则返回ture且替换,反之返回false | |
frequency(Collection, Object o) | 返回集合中出现元素o的次数 | |
indexOfSubList(List list,List subList) | 查找subList集合在list集合中首次出现的索引数 | |
lastindexOfSubList(List list,List subList) | 查找subList集合在list集合中最后出现的索引数 | |
同步控制 | synchronizedSet | 返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题。 使用该方法时,在遍历的时候,需要手动返回集合(synchronized(m){//迭代遍历语句}),m表示集合 |
synchronizedSortedSet | ||
synchronizedList | ||
synchronizedMap | ||
synchronizeSortedMap | ||
设置不可变集合 | emptyXxx() | 返回一个空的不可变的集合对象 |
singletonXxx() | 返回一个值包含指定对象的不可变的集合对象 | |
unmodifiableXxx() | 返回指定集合对象的不可变视图 | |
判断和赋值 | disjoint(Collection<?> c1,Collection <?>c2) | 判断两个集合有没有相同的元素,有就返回false,没有就返回true |
addAll(Collection <? super T> c,T...a) | 将指定元素添加到集合中 | |
copy(List m,List n); | 将n中元素赋值到m中,n中长度短时,可以赋值一段 | |
checkedXxx() | 查找这个集合是不是Xxx这个类型的 | |
其它 | asLifoQueue(Deque deque) | 将双端队列(先进先出,队列满,则首段优先退出)表示为Lifo队列(LIFO表示后进先出) |
list(Enumeration en) | 返回一个数组,该列表包含给定Enumeration (枚举)返回的所有元素,以及将这些元素按枚举返回的顺序存储在ArrayList中的方法Java Collections list()方法与示例_cumtb2002的博客-CSDN博客 | |
singleton(),singletonMap()、singletonList() | 单列模式,只有一个元素 |
一、排序操作
1、sort(Collection array); 自然排序
自然排序需要在引用类型中重写ComparaTo方法,
sort(Collection array,Comparator c))
比较器排序,需要重写比较器,需要重写comparator方法
package cn.cm;
import java.util.*;
//@Author
//@Date
//@Description
public class CollectionDome {
public static void main(String[] args) {
List<Student> list=new ArrayList<Student>();
Student s1=new Student("张三","男",10);
Student s2=new Student("李四","男",20);
Student s3=new Student("王五","女",5);
Collections.addAll(list,s1,s2,s3);
System.out.println(list);
//sort自然排序,需要重写ComparaTO方法
Collections.sort(list);
System.out.println(list);
//sort比较器排序,重写compare方法
Collections.sort(list , new Comparator<Student>() {
@Override
public int compare(Student o1 , Student o2) {
int num=o1.getAge()-o2.getAge();
int num2= num==0 ? o1.getName().compareTo(o2.getName()): num;
return num2;
}
});
System.out.println(list);
}
}
public class Student implements Comparable<Student>{
private String name;
private String geeder;
private int Age;
//comparaTO方法重写
@Override
public int compareTo(Student o) {
int num=this.getAge()-o.getAge();
if (num==0){
if(this.getName().equals(o.getAge())){
return 0;
}
}else return num;
return num;
}
public Student(String name , String geeder , int age) {
this.name = name;
this.geeder = geeder;
Age = age;
}
public int getAge() { return Age;}
public void setAge(int age) {Age = age;}
public Student() {}
public String getName() { return name;}
public void setName(String name) {this.name = name;}
public String getGeeder() {return geeder;}
public void setGeeder(String geeder) {this.geeder = geeder;}
//toString重写
@Override
public String toString() {
return
"name=" + name +
"geeder=" + geeder +
" Age=" + Age +
"\n";
}
}
2、reverse() 反转集合中的元素顺序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//@Author
//@Date
//@Description
public class CollectionDome2 {
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
list.add(2);
list.add(4);
list.add(6);
list.add(7);
list.add(5);
list.add(8);
//原来顺序
System.out.println(list);//输出[2, 4, 6, 7, 5, 8]
//自然排序
Collections.sort(list);
System.out.println(list);//输出[2, 4, 5, 6, 7, 8]
//反转排序
Collections.reverse(list);
System.out.println(list);//输出[8, 7, 6, 5, 4, 2]
}
}
3、shuffle(Collection array);
对集合中的元素进行随机排序
Collection.shuffle(list);
System.out.print(list);// 运行后结果时[8, 2, 4, 7, 6, 5],
每次运行都会随机排序
4、swap(List list,int i,int j)
交换集合list中索引为i,和 j 的元素。
如上面的list集合[2, 4, 6, 7, 5, 8]
swep(list,1,2);
System.out.print(list);// 运行后结果时[2, 6, 4, 7, 5, 8]
5、rotate(List list,int m);
将集合list中的元素移位m,m大于0时右移,移动后末位移动到首位
m小于0左移,移动后首位移动到末位
如上面的list集合[2, 4, 6, 7, 5, 8]
swep(list,2); //移动后集合[5,8,2,4,6,7];
swep(list,-1);//移动后集合[8,2,4,6,7,5]