JAVA中的集合排序
2018-02-21 16:32
260 查看
版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79343240
+ 对存储在List中的整型数据进行排序
对存放在List中的字符串进行排序
Comparator接口
强行对某个对象进行自定义排序的函数
可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort)
**int compare(T o1, T o2) 比较用来排序的两个参数。 如果o1
1. 单独定义比较类,实现Comparator接口
按照名字比较
按年龄比较
2. 在排序的时候传入比较的策略
Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。
这种排序被称为类的自然排序,类的 compareTo 方法被称为它
的自然比较方法。
对于集合,通过调用Collections.sort方法进行排序。
对于数组,通过调用Arrays.sort方法进行排序
int compareTo(T o)方法 :该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
在构建类的时候,在要比较的类中重写 int compareTo()方法
Comparator接口与Comparable接口的区别
http://blog.csdn.net/xiaoduan_/article/details/79343240
JAVA集合排序
基本类型和字符串类型排序
基本类型和字符串类型排序直接调用Collections.sort(list);根据元素的自然顺序对指定列表按升序进行排序
+ 对存储在List中的整型数据进行排序
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class IntSort { public static void main(String[] args) { // 对存储在List中的整型数据进行排序 List<Integer> list=new ArrayList<Integer>(); list.add(5); list.add(9); list.add(3); list.add(1); System.out.println("排序前:"); for(int n:list){ System.out.print(n+" "); } System.out.println(); //对List中的数据进行排序 Collections.sort(list); System.out.println("排序后:"); for(int n:list){ System.out.print(n+" "); } } }
对存放在List中的字符串进行排序
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class StringSort { public static void main(String[] args) { // 对存放在List中的字符串进行排序 List<String> list=new ArrayList<String>(); list.add("orange"); list.add("blue"); list.add("yellow"); list.add("gray"); System.out.println("排序前:"); for(String s:list){ System.out.print(s+" "); } System.out.println(); Collections.sort(list); System.out.println("排序后:"); for(String s:list){ System.out.print(s+" "); } } }
自定义类型排序
使用Comparable和Comparator接口Comparator接口
强行对某个对象进行自定义排序的函数
可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort)
**int compare(T o1, T o2) 比较用来排序的两个参数。 如果o1
1. 单独定义比较类,实现Comparator接口
按照名字比较
import java.util.Comparator; public class NameComparator implements Comparator<Cat> { @Override public int compare(Cat o1, Cat o2) { // 按名字升序排序 String name1=o1.getName(); String name2=o2.getName(); int n=name1.compareTo(name2);//比较方法 return n; } }
按年龄比较
import java.util.Comparator; public class AgeComparator implements Comparator<Cat>{ @Override public int compare(Cat o1, Cat o2) { // 按年龄降序排序 int age1=o1.getMonth(); int age2=o2.getMonth(); return age2-age1; } }
2. 在排序的时候传入比较的策略
//按名字进行升序排序 Collections.sort(catList, new NameComparator()); System.out.println("按名字升序排序后:"); for(Cat cat:catList){ System.out.println(cat); } //按年龄进行降序排序 Collections.sort(catList, new AgeComparator()); System.out.println("按年龄降序排序后:"); for(Cat cat:catList){ System.out.println(cat); }
Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。
这种排序被称为类的自然排序,类的 compareTo 方法被称为它
的自然比较方法。
对于集合,通过调用Collections.sort方法进行排序。
对于数组,通过调用Arrays.sort方法进行排序
int compareTo(T o)方法 :该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
在构建类的时候,在要比较的类中重写 int compareTo()方法
@Override public int compareTo(Goods o) { // 取出商品价格 double price1=this.getPrice(); double price2=o.getPrice(); int n=new Double(price2-price1).intValue();//降序排列 return n; }
Comparator接口与Comparable接口的区别
Comparator | Comparable |
---|---|
位于java.util包 | 位于java.long包 |
在要比较的类的外部实现该接口,比较灵活,可以自定义多中比较策略,并且在排序的时候按需选择 | 在要比较的类上实现该接口,只能定义一种排序策略 |
调用sort方法时,要指定Cmoparator的 实现类 | 调用sort方法时,只需指定集合名即可 |
相关文章推荐
- Java集合和数组的排序方式总结
- Java对List集合中的元素进行排序
- 初学Java,集合类的排序,查找,替换操作(三十五)
- Java集合对象排序
- java集合中对象某属性比较排序Comparable与Comparator
- Java 往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
- java对集合进行排序
- [基础回顾-JAVA类集框架篇] 之 集合排序Comparable与Comparator(下)
- java中Comparator的用法(用于集合对象或数组对象进行排序)
- java中对集合或数组进行排序有两种方法:Comparable 与 Comparator
- Java集合对象的排序使用Collection.sort方法,先实现Comparable接口
- java 对于集合的排序
- java集合中对象排序
- Java比较器对数组,集合排序一
- java 集合的排序
- java如何对map进行排序详解(map集合的使用)
- java集合中对象某属性比较排序Comparable与Comparator
- Java集合排序方法comparable和comparator的总结
- Java集合类型遍历和排序
- java中字符串集合排序