我正在使用Java-8 lambda對列表進行排序。如何在JAVA8 lambda中使用條件進行排序
這裏是後排序
[(t2, tester2), (t1, tester1), (t3, tester3), (t4, tester4)]
我想要得到的結果如上
String specialId = 't2'
List<Test> list = new ArrayList<>();
Test test1 = new Test();
test1.setId = "t1"
test1.setName = "tester1"
list.add(test1)
Test test2 = new Test();
test2.setId = "t4"
test2.setName = "tester4"
list.add(test2)
Test test3 = new Test();
test3.setId = "t3"
test3.setName = "tester3"
list.add(test3)
Test test4 = new Test();
test4.setId = "t2"
test4.setName = "tester2"
list.add(test4)
Stream<Test> s1 = list.stream.filter(t -> t.getId.equals(specialId));
Stream<Test> s2 = list.stream.filter(t -> !t.getId.equals(specialId))
.sorted(Comparator.comparing(Test::getName));
Stream<Test> s = Stream.concat(s1, s2);
List<Test> result = s.collect(Collectors.toList());
我得到預期的結果
[(t1, tester1), (t4, tester4), (t3, tester3), (t2, tester2)]
名單。但我只想使用一次流。 我如何分類?
是項T2首先,因爲它是唯一的例外,還是有更多的一般方法的項目先去哪個? – wumpz
在這種情況下,沒有流可能會更簡單:'List result = new ArrayList <>(list); result.sort(...);'你可以在[...]中使用[kennytm's answer](http://stackoverflow.com/a/42575546/2711488)的比較器。 –
Holger