java对list进行排序

本文介绍了Java中对List进行排序的两种常见方法。一种是针对简单情况,直接使用List的sort方法;另一种是当list参数类型复杂时,需要让实体类实现Comparable接口并重写compareTo方法。由于Integer类已内置排序,所以在处理Integer类型的List时,无需额外实现接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、先来个简单的,上代码

	//list排序
	public static void listsort5(){
		
		List listarr = new ArrayList<>();
		listarr.add(1);
		listarr.add(3);
		listarr.add(5);
		listarr.add(7);
		listarr.add(2);
		listarr.add(4);
		listarr.add(6);
		System.out.println("list排序前"+listarr);
		Collections.sort(listarr);
		System.out.println("list排序后"+listarr);
	}
程序运行结果:
list排序前[1, 3, 5, 7, 2, 4, 6]
list排序后[1, 2, 3, 4, 5, 6, 7]
    

2、list参数类型相对复杂的排序

	public static void listsort6(){

		List listarr = new ArrayList<>();

		listarr.add(new User("wuhuixing","16"));
		listarr.add(new User("shaolijie","10"));
		listarr.add(new User("jizhonghe","20"));
		listarr.add(new User("zhangguohao","10"));

		Collections.sort(listarr);//排序方法

		System.out.println("排序后:"+listarr);
	}
    //实体类  实现Comparable接口 重写compareTo方法实现排序
	static class User implements Comparable<User>{
		
		private String username;
		private String userage;
		
		public String getUsername() {
			return username;
		}
		public void setUsername(String username) {
			this.username = username;
		}
		public String getUserage() {
			return userage;
		}
		public void setUserage(String userage) {
			this.userage = userage;
		}
		public User(String username,String userage){
			this.username=username;
			this.userage=userage;
		}
		@Override
		public String toString() {
			return "User [username=" + username + ", userage=" + userage + "]";
		}

		@Override
		public int compareTo(User o) {
			return this.userage.compareTo(o.getUserage());
		}
		
	}
程序运行后输出:
排序后:[User [username=shaolijie, userage=10], User [username=zhangguohao, userage=10], User [username=wuhuixing, userage=16], User [username=jizhonghe, userage=20]]

总结:以上就是list排序经常用的几种方法,两种方法都是通过实体实现Comparable接口并重写compareTo方法,第一种方式之所以没实现接口并实现compareTo方法,因为我们list中的值是Integer类型的,通过查看Interger类源码可以看到,java已经帮我们实现好了,所以不用再次写!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值