您好,登录后才能下订单哦!
一、集合排序概述
1、主要内容
回顾:
//数组的排序
int[] arr= {2,3,4,5,2,1};
Arrays.sort(arr);
2、集合排序方法
二、对基本数据类型和字符串类型进行排序
1、对基本数据类型排序
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 + " ");
		}
	}
	
}
2、对字符串排序
集合中字符串的排序后其实是按字符顺序,ASCII值顺序进行排序的
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 str: list) {
			System.out.print(str + " ");
		}
		System.out.println();
		//对List中的数据进行排序
		Collections.sort(list);
		System.out.println("排序后: ");
		for (String str: list) {
			System.out.print(str + " ");
		}
		//排序后其实是按字母顺序
	}
}
三、Comparator接口
1、问题场景:
自定义的类如何排序?
2、解决方法:
使用Comparable或Comparator接口
3、Comparator接口介绍
4、对宠物猫进行排序
对自定义的类按照一定的规则进行排序:
(1)对宠物猫按名字进行排序
String类型具有compareTo()方法
例:
int n = name1.conpareTo(name2);
如果name1<name2时,那么n是负整数,相等则为0,否则为正整数。
name1与name2位置调换下,则会实现倒序的排序。
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;
	}
	
}
语法格式:
Collections.sort(catList, new NameComparator());
(2)对宠物猫按年龄降序排序
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;
	}
}
语法格式:
Collections.sort(catList, new AgeComparator());
四、Comparable接口
1、Comparable概述
2、对商品价格进行降序排序案例
(1)操作步骤
(2)代码实现
①商品类的定义
public class Goods implements Comparable<Goods> { //实现Comparable接口,利用泛型限定比较的类型
	private String id; //商品编号
	private String name; //商品名称
	private double price; //商品价格
	//构造方法
	public Goods() {
		
	}
	public Goods(String id, String name, double price) {
		this.setId(id);
		this.setName(name);
		this.setPrice(price);
	}
	
	//getter和setter方法
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	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;
	}
	
	
	@Override
	public String toString() {
		return "商品编号:" + id + ",商品名称:" + name + ",商品价格:" + price;
	}
	@Override
	public int compareTo(Goods o) {  //重写compareTo方法。
		//取出商品价格
		double price1 = this.getPrice();
		double price2 = o.getPrice();
		int n = new Double(price2 - price1).intValue();  //double类型的差值转为int
		return n;
	}
②排序步骤
Collections.sort(goodsList);
五、集合排序总结
Comparator和Comparable接口的区别
1、Comparator:
①位于java.util包
②在要比较的类的外部实现该接口
③调用sort方法时,要指定Comparator的实现类
使用顺序:
2、Comparable
①位于java.lang包
②在要比较的类上实现该接口
③调用sort方法时,只需指定集合名即可
使用顺序:
定义要比较的类,并实现comparable接口
测试

以上所述是小编给大家介绍的Java集合排序详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。