Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将列表对象与其他对象排序_Java_Sorting_Object - Fatal编程技术网

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呢?有一个解决方案。请用此贴出另一个问题,我会回答,否则可能会在评论中贴出代码或贴出与主要主题/问题无关的答案。