标签:列表 重写 sort scl tostring ret this 正整数 add
一、集合中的基本数据类型排序
1. 使用Collections类的sort()方法
2.sort(List<T> list):
根据元素的自然顺序对指定列表按照升序进行排序
package com.mpp.sort; 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中的数据进行排序 System.out.println("排序后:"); Collections.sort(list); for(int n:list){ System.out.print(n+" "); } } }
二、集合中的字符串排序
package com.mpp.sort; 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("排序后:"); //按照ascll码值进行排序 for(String s:list){ System.out.print(s+ " "); } } }
三、Comparator接口
1. 强行对某个对象进行整体排序的比较函数
2. 可以将Comparator传递给sort方法(如Collections.sort或Array.sort)
3. int compare(T o1,T o2)比较用来排序的两个参数
-如果o1<o2,返回负整数
-如果o1==o2,返回0
-如果o1>o2,返回正整数
4. boolean equals(Object obj)指示某个其他对象是否“等于”此Comparator
此方法可以被Object类中的equals方法覆盖,不必重写
例题:对宠物猫分别按名字升序,年龄降序
Cat类:
package com.mpp.sort; public class Cat { private String name; //名字 private int mounth; //年龄 private String species;//品种 public Cat(String name,int mounth,String species){ super(); this.setName(name); this.setMounth(mounth); this.setSpecies(species); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMounth() { return mounth; } public void setMounth(int mounth) { this.mounth = mounth; } public String getSpecies() { return species; } public void setSpecies(String species) { this.species = species; } //toString方法重写 @Override public String toString(){ return "[名字:"+name+",年龄:"+mounth+",品种:"+species+"]"; } }
NameComparator类:
package com.mpp.sort; 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); //name1>name2返回正整数,反之返回负整数,相等返回0 //倒序比较 int n = name2.compareTo(name1); return n; } }
AgeComparator类
package com.mpp.sort; import java.util.Comparator; public class AgeComparator implements Comparator<Cat> { @Override public int compare(Cat o1,Cat o2){ //按年龄降序排序 int age1 = o1.getMounth(); int age2 = o2.getMounth(); int n = age1-age2; //如果age1>age2,返回正数,反之返回负数,相等返回0 return age2-age1; //降序 // return age1-age2; //升序 } }
CatTest类:
package com.mpp.sort; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CatTest { public static void main(String[] args) { //按照名字升序排序 Cat cafe = new Cat("cafe",5,"美短"); Cat milk = new Cat("milk",3,"橘猫"); Cat huahua = new Cat("huahua",2,"橘猫"); List<Cat> list = new ArrayList<>(); list.add(cafe); list.add(milk); list.add(huahua); //排序前 System.out.println("排序前:"); for(Cat cat:list){ System.out.println(cat); } //按名字进行排序 Collections.sort(list,new NameComparator()); System.out.println("按名字排序后:"); for(Cat cat:list){ System.out.println(cat); } //按年龄进行降序排序 Collections.sort(list,new AgeComparator()); System.out.println("按年龄降序排序后:"); for(Cat cat:list){ System.out.println(cat); } } }
四、Comparable接口
标签:列表 重写 sort scl tostring ret this 正整数 add
原文地址:https://www.cnblogs.com/mpp0905/p/10404055.html