我有一个包含我自己的对象的列表,称为 OrderedProducts。我想先按 int sequence
排序此列表,然后按 String name
排序。
我知道如何首先使用以下默认 Collections.sort 按顺序排序:
Collections.sort(orderedProductsList, new Comparator<OrderedProduct>(){
@Override
public int compare(OrderedProduct op1, OrderedProduct op2){
if(op1.getSequence() < op2.getSequence())
return -1;
else if(op1.getSequence() > op2.getSequence())
return 1;
else // op1.getSequence() == op2.getSequence()
return 0;
}
});
我现在想要的是在有序序列中按名称排序。因此,例如,我的列表中有以下 OrderedProducts:
- 序列 = 2;姓名 = "AAA";
- 序列 = 4;姓名 = "AAA";
- 序列 = 7;名称 = "BBB";
- 序列 = 2;名称 = "CCC";
- 序列 = 1;姓名 = "ZZZ";
- 序列 = 4;姓名 = "ZZZ";
- 序列 = 4;姓名 = "ABC";
这应该像这样排序:
5, 1, 4, 2, 7, 6, 3.
Sequence Name
1 "ZZZ"
2 "AAA"
2 "CCC"
4 "AAA"
4 "ABC"
4 "ZZZ"
7 "BBB"
最佳答案
在你的比较器中,当序列相等时比较名字
Collections.sort(orderedProductsList, new Comparator<OrderedProduct>(){
@Override
public int compare(OrderedProduct op1, OrderedProduct op2){
if(op1.getSequence() < op2.getSequence())
return -1;
else if(op1.getSequence() > op2.getSequence())
return 1;
else
return op1.getName().compareToIgnoreCase(op2.getName());
}
});
关于Java/Android - 两个 Collections.sort 组合(首先按 int,然后按名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989854/