次の問題についてあなたの助けが必要です:
私のコードには要素のリストがあります。シーズンと番号の 2 つの属性に従ってこのリストをソートする必要があります。
リストの例:
<episode_list>
<episode id="280" number="13" season="1">
<title><![CDATA[Bowl Game]]></title>
</episode>
<episode id="314" number="12" season="1">
<title><![CDATA[Piss Test]]></title>
</episode>
<episode id="730" number="11" season="1">
Collections.sort() を使用していますが、例外が発生します。私が理解しているように、JDOM要素では使用できません:
List<Element> episodes;
Collections.sort(episodes, new Comparator<Element>() {
@Override
public int compare(Element elem1, Element elem2) {
Integer seasonNumber1 = Integer.valueOf(myService.valueOfAttribute("season", elem1));
Integer seasonNumber2 = Integer.valueOf(myService.valueOfAttribute("season", elem2));
int seasonComp = seasonNumber1.compareTo(seasonNumber2);
if (seasonComp != 0) {
return seasonComp;
} else {
Integer episodeNumber1 = Integer.valueOf(myService.valueOfAttribute("number", elem1));
Integer episodeNumber2 = Integer.valueOf(myService.valueOfAttribute("number", elem2));
return episodeNumber1.compareTo(episodeNumber2);
}
}
});
Exception: java.util.Collections$UnmodifiableList$1.set(Unknown Source)
java.util.Collections.sort(Unknown Source)
実際には、並べ替えられた xml は必要ありません。必要なのはエピソード属性「id」だけです (最低シーズンと最低エピソード番号)。
何をお勧めしますか?私はすべての要素を調べる別の実装を持っていますが、それは良い解決策だとは思いません.Javaクラスのエピソード(id、エピソード、シーズン)を作成し、リストをリストに変換してソートすることもできますが、それは良い考えだとは思わないでください。ElementのsortContentメソッドもありますが、実装方法がわかりません。
どんな助けにも感謝します。