Java 将列表对象与其他对象排序
假设我有两门课Java 将列表对象与其他对象排序,java,sorting,object,Java,Sorting,Object,假设我有两门课 public class TestA{ TestB testB; String text; SecondTest secondTest; . . . } public class TestB{ int a; int b; } 现在我有了一个带有TestB列表列表1 如果我想对列表进行排序,我可以这样做: list1.sort(Comparator.compa
public class TestA{
TestB testB;
String text;
SecondTest secondTest;
.
.
.
}
public class TestB{
int a;
int b;
}
现在我有了一个带有TestB
列表列表1
如果我想对列表进行排序,我可以这样做:
list1.sort(Comparator.comparing(TestB::getA)
但是如果我有一个带有TestA
列表列表2
如何排序到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() );
List list2=Arrays.asList(newtesta(newtestb(2,20))、newtesta(newtestb(1,10))、newtesta(newtestb(3,30));
list2.sort(getComparator());
公共比较器getComparator(){
返回新的比较器(){
@凌驾
公共整数比较(测试obj1、测试obj2){
int obj1A=obj1.getTestB().getA();
int obj2A=obj2.getTestB().getA();
返回整数。比较(obj1A、obj2A);
}
};
}
因此,应该相应地处理空值。这是一个有趣的问题。 我不知道有哪种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() );
List list2=Arrays.asList(newtesta(newtestb(2,20))、newtesta(newtestb(1,10))、newtesta(newtestb(3,30));
list2.sort(getComparator());
公共比较器getComparator(){
返回新的比较器(){
@凌驾
公共整数比较(测试obj1、测试obj2){
int obj1A=obj1.getTestB().getA();
int obj2A=obj2.getTestB().getA();
返回整数。比较(obj1A、obj2A);
}
};
}
应相应地处理所有空值。@luk2302感谢您的帮助info@luk2302谢谢你的信息谢谢,看起来不错。我还有一个问题,如果我想在排序a之后再排序到b呢?有一个解决方案。请用此贴出另一个问题,我会回答,否则可能会混淆评论中的帖子代码,或者贴出与主题/问题无关的答案。谢谢,看起来不错。我还有一个问题,如果我想在排序a之后再排序到b呢?有一个解决方案。请用此贴出另一个问题,我会回答,否则可能会在评论中贴出代码或贴出与主要主题/问题无关的答案。