Java学习记录之Collections的工具类
程序员文章站
2024-01-14 22:51:28
...
首先大家要注意一下,此篇文章是关于Collections工具类,区别于前面写过的Collection集合那一章。
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static boolean addAll(Collection c,T…elements) :往集合中添加一些元素
public static void shuffle(List<?> list) 打乱顺序,打乱集合顺序
import java.util.Collections;
import java.util.ArrayList;
public class DemoCollections{
public static void main(String[] args){
ArrayList<String> list = new ArrayList<>();
//往集合中添加多个元素
list.add("aaa");
list.add("bbb");
//还可以用addAll方法往集合里添加元素
//public static <T> boolean addAll(Collection<T> c,T...elements);
Collections.addAll(list,"aaa","bbb");
}
}
具体讲一下Collections集合工具类中的sort()方法:
1 public static void sort(List list) :将集合中元素按照默认规则排序
注意:
sort(List list)使用前提
被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则
Comparable接口的排序规则:
自己(this)-参数:升序
参数-自己(this):降序
//创建一个Person类
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(){
}
publix Person(String name,int age){
this.name=name;
this.age=age;
}
@Override
public String toString(){
return "Person{"+"name='"+name+'\''+",age="+age+'}';
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
//重写排序规则
@Override
public int compareTo(Person o){
//return 0;//认为元素都是相同的
//自定义比较规则,比较两个人的年龄(this,参数Person)
return this.getAge()-o.getAge();//年龄升序排序
}
}
//主程序
import java.util.Collections;
public class Demo02Sort{
public static void main(Sting[] args){
//public static <T> void sort(List<T> list) :将集合中元素按照默认顺序排序
ArrayList<Integer> list01 = new ArrayList<>();
//添加元素
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1,3,2]
//用sort方法让其按照默认方法排序
Collections.sort(list01);
System.out.println(list01);//[1,2,3]
ArrayList<String> list02 = new ArrayList<>();
list02.add("a");
list02.add("c");
list02.add("b");
System.out.println(list02);//[a,c,b]
Collections.sort(list02);//[a,b,c]
ArrayList<Person> list03 = new ArrayList<>();
Person p1 = new Person("张三",18);
Person p2 = new Person("李四",20);
Person p3 = new Person("王五",15);
System.out.println(list03);//[Person{name='张三',age=18},Person{name='李四',age=20},Person{name='王五',age=15}] 因为重写了toString方法,所以打印ArrayList集合的对象才不会是地址值
Collections.sort(list03);//若是不实现Comparable接口,重写compareTo方法,就无法排序,就会报错
}
}
2.public static void sort(List list,Comparator<? super T>) :将集合中元素按照指定的规则排列
Comparator和Comparable的区别
Comparable :自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
Comparator :相当于找一个第三方的裁判,比较两个
Comparator的排序规则;
o1-o2 :升序,
o2-o1 :降序
//创建一个Student类
public class Student{
private String name;
private int age;
public Student{
}
public Student(String name,int age){
this.name=name;
this,age=age;
}
@Override
public String toString(){
return "Person{"+"name='"+name+'\''+",age="+age+'}';
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}
//主程序
import java.util.Collections;
**import java.util.Comparator**;//别忘记
public class Demo03Sort{
public static void main(String[] args){
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1,3,2]
Collections.sort(list01,new Comparator<Integer>(){
//重写比较的规则
@Override
public int compare(Integer o1,Integer o2){
//return o1-o2;//升序
return o2-o1;//降序
}
});//**别忘记分号**
System.out.println(list01);//[3,2,1]
ArrayList<Student> list02 = new ArrayList<>();
list02.add(new Student("迪丽热巴",18));
list02.add(new Student("古力娜扎",20));
list02.add(new Student("杨幂",17));
Collections.sort(list02,new Comparator<Student>(){
@Override
public int compare(Student o1,Student o2){
//按照年龄升序排列
int result= o1.getAge-o2.getAge;//升序
//如果年龄相同,再使用姓名的第一个字比较
if(result==0){
result=o1.getName().chart(0)-o2.getName.chartAt(0);
}
return result;
}
});
}
推荐阅读
-
Java学习记录之Collections的工具类
-
java基础学习之Collections集合工具类
-
Java基础之集合框架--Collections工具类中的sort()方法
-
(Java学习笔记)JavaSE 集合概述及Collections工具类
-
java学习笔记:集合框架的工具类Collections
-
Java中的集合---------Collections 类---集合的工具类
-
Java学习的第十九天(JavaSE特别篇_Collections工具类_HashSet_TreeSet_Map)
-
java集合框架工具类Collections,集合的操作
-
Java集合中的工具类-----Collections
-
Java基础之---Collections工具类