我有一个像下面的pojo,
class Employee
{
private String employeeName;
private String age;
//getter();setter();
....
}
我的employeeList
价值低于
List<Employee> employeeList = new ArrayList<Employee>();
值:[{"ccc", 20}, {"bbb", 30}, {"aaa", 40}]
我希望employeeList
具有上述值,但该列表应首先具有“bbb”obj。如何实现这一点。我们不能简单地对员工姓名使用排序。
答案 0 :(得分:2)
您可以使用Collections.sort
执行此操作并提供Comparator
例如
public void sortList(String byString){
Collections.sort(employeeList, new Comparator<Employee>() {
@Override
public int compare(Employee lhs, Employee rhs) {
if (lhs.getEmployeeName().equals(byString)) return -1;
if (rhs.getEmployeeName().equals(byString)) return 0;
return 1;
}
});
}
Ideone:https://ideone.com/FCRxwp
答案 1 :(得分:0)
如果你想让它变量并且能够传递应该在开头排序的内容,你可以创建一个简单的方法:
public static void sort(List<Employee> list, String nameToSortAtBeginning) {
Collections.sort(list, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
if(nameToSortAtBeginning.equals(o1.getEmployeeName()) && !nameToSortAtBeginning.equals(o2.getEmployeeName())) {
return -1;
} else {
return o1.getEmployeeName().compareTo(o2.getEmployeeName());
}
}
});
}
然后调用该方法:
sort(employeeList, "bbb");
注意:如果您将 null 作为某些员工姓名的可能值,则上述代码将无效。如果将null作为值,则有可能必须在比较器中添加空值处理。