私はList
を持っていますが、ほとんどの要素はフィールドtitle
に基づいて注文されています。いくつかの要素は順序付けられていません。どの要素がソートされていないかを特定する必要があります。部分的に順序付けられたリストから順序付けられていない要素を見つける方法?
クラスはList
の要素を定義するために使用される次のとおりです。
public class Doc {
String docOid;
String title;
private Doc(String docOid, String title) {
this.docOid = docOid;
this.title = title;
}
}
私が書かれているロジックはこれです:私は視覚的に結果を検証していたときに実行された後
//List<Doc> docs = given partially ordered list
List<String> oids = new ArrayList<>();
for (int i = 0; i < docs.size(); i++) {
Doc doc = docs.get(i);
Doc faildDoc = null;
for (int j = 0; j < i; j++) {
Doc prevDoc = docs.get(j);
if (prevDoc.title != null && doc.title != null) {
int compare = collator.compare(prevDoc.title, doc.title); // For comparing I have used Collator
if (compare > 0) {
faildDoc = prevDoc;
break;
}
}
}
if (faildDoc != null) {
if (!oids.contains(faildDoc.docOid)) {
oids.add(faildDoc.docOid);
System.out.println(faildDoc.docOid);
}
}
}
ロジックが正しい結果を出さないことが分かります。
どのような提案も非常に役に立ちます。続き
は、現在の結果のサンプルです:
User Guide Metered Smart //<--Ordered
User Guide, Network Management Card //<--Ordered
User Guide. GPRS Modem //<--Ordered
Simulation sub-base //<--Un ordered
Vent Hood Installation //<--Ordered
Vented Pullbox Installation //<--Ordered
サンプルが正しく注文された場合、それは次のようになります。
Simulation sub-base
User Guide Metered Smart
User Guide, Network Management Card
User Guide. GPRS Modem
Vent Hood Installation
Vented Pullbox Installation
だから私は
Simulation sub-base //<--Un ordered
ことを見つける必要があります
は発注されていません。
あなたは「ソートされていない要素」を最初に正確に定義する必要があります。 – Andremoniy
@Andremoniy、サンプルで更新。 –
そのサンプルはあなたの現在の、または予想される結果ですか? – alayor