List按属性排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TagBean {

	private String tagId;

	private int count;

	public String getTagId() {
		return tagId;
	}

	public void setTagId(String tagId) {
		this.tagId = tagId;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public TagBean() {
		super();
	}

	public TagBean(String tagId, int count) {
		super();
		this.tagId = tagId;
		this.count = count;
	}

	@Override
	public String toString() {
		return "TagBean [tagId=" + tagId + ", count=" + count + "]";
	}

	public static void main(String[] args) {
		List<TagBean> list = new ArrayList<>();
		list.add(new TagBean("tagId01", 100));
		list.add(new TagBean("tagId02", 520));
		list.add(new TagBean("tagId03", 10));
		list.add(new TagBean("tagId04", 430));
		list.add(new TagBean("tagId05", 950));
		Collections.sort(list, new Comparator<TagBean>() {
			@Override
			public int compare(TagBean o1, TagBean o2) {
				return o2.getCount() - o1.getCount();
			}
		});
		for (TagBean tagBean : list) {
			System.out.println(tagBean.toString());
		}
	}

}  

运行结果:

TagBean [tagId=tagId05, count=950]
TagBean [tagId=tagId02, count=520]
TagBean [tagId=tagId04, count=430]
TagBean [tagId=tagId01, count=100]
TagBean [tagId=tagId03, count=10]

### Java 中基于对象属性对 `List` 进行排序Java 中,可以采用多种方式来根据对象的特定属性对列表中的元素进行排序。以下是两种常用的方法: #### 方法一:通过实现 `Comparable<T>` 接口 当希望某个类的对象能够自然地比较大小时,可以在该类内部实现 `Comparable<T>` 接口,并重写 `compareTo()` 方法,在此方法内指定用于比较的关键字段。 ```java public class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(Person otherPerson) { return Integer.compare(this.age, otherPerson.age); // 按年龄升序排列 } } ``` 创建好实现了 `Comparable` 的实体类之后,可以直接调用 `Collections.sort(list)` 来完成排序操作[^4]。 #### 方法二:使用外部比较器——`Comparator<T>` 对于不想修改原有类结构的情况,或者需要根据不同条件灵活调整排序规则的情形下,则可以选择定义一个独立于目标类之外的比较器实例。这可以通过匿名内部类或是 lambda 表达式的形式快速构建出来。 ```java import java.util.*; class Main { static class Employee { String name; double salary; Employee(String n, double s) {name=n;salary=s;} @Override public String toString() { return "[Name=" + name + ", Salary=" + salary + "]"; } } public static void main(String[] args){ List<Employee> employees = Arrays.asList( new Employee("Alice", 70_000), new Employee("Bob", 85_000), new Employee("Charlie", 92_000)); Collections.sort(employees, (e1,e2)->Double.compare(e1.salary, e2.salary)); // 使用lambda表达式的比较器 System.out.println("After sorting by salary:"); for(Employee emp : employees) System.out.println(emp); } } ``` 上述代码展示了如何利用 Lambda 表达式作为参数传递给 `Collections.sort()` 函数来进行员工薪资高低顺序上的整理工作[^2]。 这两种方案各有优劣之处,具体选用哪一种取决于实际应用场景的需求以及个人偏好等因素考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值