試行境界チェック
DashboardObjectAIR[] airObj = new DashboardObjectAIR[2];
airObj[0] = new DashboardObjectAIR("UnOk");
airObj[1] = new DashboardObjectAIR("Ok");
DashboardObjectAIR[] airObj1 = new DashboardObjectAIR[2];
airObj1[0] = new DashboardObjectAIR("Ok");
airObj1[1] = new DashboardObjectAIR("Ok");
DashboardObjectAIR[] airObj3 = new DashboardObjectAIR[2];
airObj3[0] = new DashboardObjectAIR("Ok");
airObj3[1] = new DashboardObjectAIR("Ok");
DashboardObjectAIR[] airObj4 = new DashboardObjectAIR[2];
airObj4[0] = new DashboardObjectAIR("Ok");
airObj4[1] = new DashboardObjectAIR("UnOk");
List<DashboardObjectAIR[]> listOfArray = new ArrayList<DashboardObjectAIR[]>();
listOfArray.add(airObj);
listOfArray.add(airObj1);
listOfArray.add(airObj3);
listOfArray.add(airObj4);
Comparator<DashboardObjectAIR[]> c = (a1, a2) -> {
int comp = a2[0].getOk().compareTo(a1[0].getOk()); // note a2 - a1 to have Unok before Ok
if (comp == 0)
return a2[1].getOk().compareTo(a1[1].getOk());
else
return comp;
};
List<DashboardObjectAIR[]> sorted = listOfArray.stream().sorted(c).collect(Collectors.toList());
sorted.forEach(arr -> System.out.println(Arrays.toString(arr)));
出力
[DashboardObjectAIR [ok=UnOk], DashboardObjectAIR [ok=Ok]]
[DashboardObjectAIR [ok=Ok], DashboardObjectAIR [ok=UnOk]]
[DashboardObjectAIR [ok=Ok], DashboardObjectAIR [ok=Ok]]
[DashboardObjectAIR [ok=Ok], DashboardObjectAIR [ok=Ok]]
編集-1
を追加する必要がない場合は、最小2つの要素を有することになるアレイを想定
以下未知のサイズの配列[ありがとう簡略化のため@Andreas]
Comparator<DashboardObjectAIR[]> c1 = (a1, a2) -> {
return Arrays.stream(a2).map(DashboardObjectAIR::getOk).sorted().collect(Collectors.joining())
.compareTo(Arrays.stream(a1).map(DashboardObjectAIR::getOk).sorted().collect(Collectors.joining()));
};
DashboardObjectAIR..Basically DashboardObjectAIRの実装を持つことができますか?比較対象を実装する必要がありますか、コンパレータを追加して現在のクラスのDashboardObjectAIRクラスを比較できます。 – Fayaz
あなたはすでに**キーワード**を選んでいます約:*コンパレータ*。そう、あなたはすでにどのトピックを研究するのかを知っています。あなたは本当に私たちにあなたのためにそれをする必要がありますか? – GhostCat
@GhostCat説明してくださいこれを実装する方法は? – Sitansu