我想做出一個特定的排序我流的比較與Java中8排序列表
我有2類是這樣的:
public class A {
private String mName;
private List<B> mBObjects;
public A(String name) {
mBObjects = new ArrayList<>();
mName = name;
}
public void addValue(B b) {
mBObjects.add(b);
}
public List<B> getBObjects() {
return mBObjects;
}
public String getName() {
return mName;
}
}
public class B {
private int mValue;
public B(int value) {
mValue = value;
}
public int getValue() {
return mValue;
}
}
我初始化論文與此代碼列表:
List<A> listOfA = new ArrayList<>();
//A 1
A a = new A("a1");
a.addValue(new B(20));
a.addValue(new B(12));
listOfA.add(a);
//A 2
a = new A("a2");
a.addValue(new B(3));
listOfA.add(a);
//A 3
a = new A("a1");
a.addValue(new B(2));
a.addValue(new B(26));
a.addValue(new B(6));
listOfA.add(a);
現在我打印列表,此代碼:
for(A a: listOfA) {
System.out.print("A: "+a.getName());
List<B> listOfB = a.getBObjects();
for(B b:listOfB) {
System.out.print(" ; notes: "+b.getValue());
}
System.out.println(" ");
}
結果是:
A: a1 ; value: 20 ; value: 12
A: a2 ; value: 3
A: a1 ; value: 2 ; value: 26 ; value: 6
我添加此代碼後:
listOfA = listOfA.stream().sorted(Comparator.comparing(A::getName)).collect(Collectors.toList());
這個列表的新的結果是:
A: a1 ; value: 20 ; value: 12
A: a1 ; value: 2 ; value: 26 ; value: 6
A: a2 ; value: 3
對於每一個對象,我想對列表mBObjects進行排序而不作任何foreach以獲得此結果:
A: a1 ; value: 12 ; value: 20
A: a1 ; value: 2 ; value: 6 ; value: 26
A: a2 ; value: 3
謝謝!
不清楚你想要做什麼。爲什麼你想避免每個? – shmosel