Collections集合工具类的方法sort(list,Comparator)和Map集合概述
Collections集合工具类的方法sort(list,Comparator)
java.utils.collections是集合工具类,用来对集合进行操作。部分方法如下:
public static 〈T> void sort(List<T> list,Comparator<? super T>):将集合中元素按照指定规则排序。
Comparator和Comparable的区别
comparable:自己(this)和别人(参数)比较,自己需要实现comparable接口,重写比较的规则compareTo方法
comparator:相当于找一个第三方的裁判,比较两个
Person
public class student{ private String name; private int age; public student(String name, int age) { this.name = name; this.age = age; } public student() { } 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 String toString() { return "student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<>(); list1.add( 1); list1.add( 3); list1.add(2); System.out.println(list1); Collections.sort(list1,new Comparator<Integer>() { //重写比较的规则 @Override public int compare( Integer o1,Integer o2) { return o2-o1;//降序 } }); System.out.println(list1); ArrayList<student> list02 = new ArrayList<>(); list02.add( new student("虎二", 18)); list02.add(new student( "莉莉安",20)); list02.add(new student("李青",17)); list02.add(new student( "巴德", 18)); Collections.sort(list02, new Comparator<student>() { @Override public int compare(student o1, student o2) { int i = o1.getAge()-o2.getAge(); if (i==0){ i = o1.getName().charAt(0)-o2.getName().charAt(0); } return i; } }); System.out.println( list02) ; }
Person
public class person implements Comparable<person>{
private String name;
private int age;
public person() {
}
public person(String name, int age) {
this.name = name;
this.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 boolean equals(Object o) {
System.out.println(getClass());//通过反射获取当前类的类型,即person
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
person person = (person) o;
return age == person.age &&
Objects.equals(name, person.name);//使用Objects中的equals方法,可以避免空指针异常
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(person o) {
return this.getAge()-o.getAge();//按年龄升序排序
}
}
private static void show() { LinkedList<String> listStr = new LinkedList<>(); listStr.add("1123"); listStr.add("122"); //方式1 /*listStr.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1-o2; } });*/ //方式2 Collections.sort(listStr, new Comparator<String>() { @Override public int compare(String o1, String o2) { return Integer.parseInt(o1)-Integer.parseInt(o2); } }); System.out.println(listStr); }
Map集合概述
java.utiL. Map<k, v>集合
Map集合的特点;
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map集合中的元素,key是不允许重复的, volue是可以重复的
4 .Map集合中的元素,key和value是——对应
Map集合的完整格式:
{key1=value1 , key2=value2 , key3=value3 , …}
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。
jJava提供了专门的集合类用来存放这种对象关系的对象,即 java.util.Map接口。
我们通过查看Map接口描述,发现wap.接口下的集合与collection接口下的集合,它们存储数据的形式不同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本