当前位置: 首页 > 工具软件 > Collections-C > 使用案例 >

Collections类方法详解____(一)排序操作类

郎刚捷
2023-12-01

        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]

 类似资料: