集合排序 Collections.srot Comparable Comparator
来源:互联网 发布:vb制作计算器 编辑:程序博客网 时间:2024/06/14 19:43
java.util.Collections提供了sort()方法,由于必须具有索引才能进行排序,因此sort()方法接受List操作对象。
1、简单的集合排序实例如下:
import java.util.ArrayList;import java.util.Collections;import java.util.List;public class test {public static void main(String[] args){List<String> list =new ArrayList<String>();list.add("bac");list.add("abc");list.add("aac");System.out.println(list);//没有排序前的集合输出顺序Collections.sort(list);System.out.println(list);//排序后输出顺序}}输出结果如下:
[bac, abc, aac]
[aac, abc, bac]
2、根据字符串长短进行排序:
package test1;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class test {public static void main(String[] args){List<String> list =new ArrayList<String>();list.add("bacd");list.add("abcdf");list.add("aac");System.out.println(list);//没有排序前的集合输出顺序Collections.sort(list,new MyComparator());System.out.println(list);//排序后输出顺序}}class MyComparator implements Comparator{public int compare(Object o1,Object o2){String str1=(String)o1;String str2=(String)o2;/**if (str1.length()>str2.length()){return 1;}if (str1.length()==str2.length()){return 0;}else{return -1;}***/int num=new Integer(str1.length()).compareTo(new Integer(str2.length()));if(num==0){return str1.compareTo(str2);//当字符串长度相等时,按字母排序}return num;}}
输出结果:
[bacd, abcdf, aac][aac, bacd, abcdf]3、对对象某元素排序 实现Comparable接口,重写compareTo()方法
package test1;import java.util.Iterator;import java.util.TreeSet;public class test {public static void main(String[] agrs){TreeSet<Student> ts = new TreeSet<Student>();ts.add(new Student("liming",23));ts.add(new Student("Liming",20));ts.add(new Student("ziming",23));ts.add(new Student("Siming",23));Iterator<Student> it= ts.iterator();while(it.hasNext()){Student stu=(Student)it.next();System.out.println(stu.getName()+stu.getAge());}}}class Student implements Comparable<Object>{private String name;private int 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;}public int compareTo(Object obj){//按照年龄进行排序//次要条件姓名排序if(!(obj instanceof Student))throw new RuntimeException("不是学生对象");Student s=(Student)obj;if(this.age>s.age){return 1;}else if(this.age==s.age){//return 0;return this.name.compareTo(s.name);//String中的compareTo实际上实现的Comparable接口中方法}else{return -1;}}Student(String name,int age){this.name=name;this.age=age;}}运行结果:
Liming20
Siming23(S是大写)
liming23
ziming23
Comparable与Comparator的区别
1、 Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。
2、Comparator位于包Java.util下,而Comparable位于包 java.lang下
3、Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操作,已经实现了Comparable接口)
4、 自定义的类要在加入list容器中后能够排序,可以实现Comparable接口,在用Collections类的sort方法排序时,如果不指定Comparator,那么就以自然顺序排序
1 0
- 集合排序 Collections.srot Comparable Comparator
- 集合排序 Comparator Comparable
- 集合排序 Comparator Comparable
- java Comparable 和 Comparator 的 Collections 排序
- Java 用Collections.sort()对对象集合排序之comparable接口和comparator比较器
- Collections的Comparable,Comparator
- java 集合排序(Comparable、Comparator)
- collections工具类-----sort排序详解(Comparable & Comparator)
- 集合中按照商品价格排序,按照学生编号排序,Collections集合里的sort方法,Comparator<T>接口,Comparable<T>接口,
- 集合, 数组,Comparable,Comparator
- 对象排序:Comparator&Comparable
- Comparator和Comparable排序
- Java集合排序方法comparable和comparator的总结
- 通过Comparator和Comparable对集合进行排序
- 集合的排序,COmparable和Comparator的区别
- 个人笔记 collections.sort comparator comparable
- [java集合]comparable与comparator
- java中Collections.sort(list)排序和Comparator和Comparable的区别
- java-相同字符的遍历
- 156-Ananagrams
- 矩阵求导
- gradle入门
- 大型网站演化
- 集合排序 Collections.srot Comparable Comparator
- C++编程入门系列之十五(类与对象:类的组合)
- 美团2017笔试 圆桌边放了一圈红包形成一个环形
- HTML布局之CSS
- Java数据结构-采用栈来实现括号的匹配
- [LeetCode]--168. Excel Sheet Column Title
- linux的一些基本安全策略
- LeetCode 371:Sum of Two Integers
- 关于Docker的常见疑问