1.集合中的基本数据类型排序
package com.imooc.sort;
import java.util.ArrayList;
import java.util.Collections;
public class Demo1 {
public static void main(String[] args) {
//对整型进行排序
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(8);
list.add(3);
list.add(7);
list.add(9);
Collections.sort(list);
System.out.println(list);
}
}
2.集合中的字符串排序
package com.imooc.sort;
import java.util.ArrayList;
import java.util.Collections;
public class Demo1 {
public static void main(String[] args) {
//对字符串进行排序
ArrayList<String> list1 = new ArrayList<>();
list1.add("orange");
list1.add("blue");
list1.add("yellow");
list1.add("pink");
Collections.sort(list1);
System.out.println(list1);
}
}
3.Comparator接口
强行对某个对象进行整体排序的比较函数
可以将Comparator传递给sort方法(如Collections.sort或Arrays.sort)
int compare(T o1,T o2)用来比较排序 的两个参数
如果o1<o2,返回负整数
如果o1=o2,返回0
如果o1>o2,返回正整数
Cat类
package com.imooc.sort;
public class Cat {
private String name;
private int age;
public int getAge() {
return age;
}
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
实现名字升序的类
package com.imooc.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();
//按猫的名字进行升序排序
return name1.compareTo(name2);
/*
如果按猫的名字进行降序排序
return name2.compareTo(name1);
*/
}
}
实现年龄降序排序的类
package com.imooc.sort;
import java.util.Comparator;
public class AgeComparator implements Comparator<Cat> {
@Override
public int compare(Cat o1, Cat o2) {
Integer age1 = o1.getAge();
Integer age2 = o2.getAge();
//按年纪进行降序排列
return age2.compareTo(age1);
}
}
package com.imooc.sort;
import java.util.ArrayList;
import java.util.Collections;
public class Demo2 {
public static void main(String[] args) {
Cat hauhua = new Cat("hauhua",5);
Cat fanfan = new Cat("fanfan",2);
Cat maomao = new Cat("maomao",3);
ArrayList<Cat> catList = new ArrayList<Cat>();
catList.add(hauhua);
catList.add(fanfan);
catList.add(maomao);
//按名字进行升序排序
Collections.sort(catList,new NameComparator());
System.out.println(catList);
System.out.println("-----------------");
//按年年龄进行降序排序
Collections.sort(catList,new AgeComparator());
System.out.println(catList);
}
}
4.Comparable接口
此接口强行对实现它的每个类的对象进行整体排序
这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法
对于集合,调用Collections.sort方法进行排序
对于数组,调用Arrays.sort方法进行排序
package com.imooc.sort;
public class Goods implements Comparable<Goods>{
private String name;
private double price;
@Override
public int compareTo(Goods o) {
double price1 = this.price;
double price2 = o.price;
int n = (int) (price2-price1);//降序排序
// int n = (int) (price1-price2);//升序排序
return n;
}
public Goods(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Goods{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
package com.imooc.sort;
import java.util.ArrayList;
import java.util.Collections;
public class Demo3 {
public static void main(String[] args) {
Goods goods1 = new Goods("手机",5000);
Goods goods2 = new Goods("冰箱",6000);
Goods goods3 = new Goods("彩电",4000);
ArrayList<Goods> goodsList = new ArrayList<Goods>();
goodsList.add(goods1);
goodsList.add(goods2);
goodsList.add(goods3);
Collections.sort(goodsList);
System.out.println(goodsList);
}
}
商品价格间降序排序