如何解决用其他对象对列表对象进行排序
假设我有两个班级
public class TestA{
TestB testB;
String text;
SecondTest secondTest;
.
.
.
}
public class TestB{
int a;
int b;
}
现在我有一个列表,其中包含TestB
List<TestB> list1
如果要对列表进行排序,可以执行以下操作:
list1.sort(Comparator.comparing(TestB::getA)
但是,如果我有一个TestA
List<TestA> list2
的列表,该怎么办
我如何对a或b(TestB)进行排序?
解决方法
这是一个有趣的问题。 对于这种深度比较,我不知道任何Java“本机”解决方案。 但是一个想法是使用您自己的特定比较器:
List<TestA> list2 = Arrays.asList( new TestA(new TestB(2,20)),new TestA(new TestB(1,10)),new TestA(new TestB(3,30)) );
list2.sort( getComparator() );
public Comparator<TestA> getComparator() {
return new Comparator<TestA>() {
@Override
public int compare(TestA obj1,TestA obj2) {
int obj1A = obj1.getTestB().getA();
int obj2A = obj2.getTestB().getA();
return Integer.compare(obj1A,obj2A);
}
};
}
当然应该对空值进行处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。