"L"、 "M"、 "XL"、 "XS"、 "S"、 "XXL"の順で衣服サイズの配列リストがあります。 「XS」、「S」、「M」、「L」、「XL」、「XXL」のような注文があります。 "38"、 "36"、 "34"、 "40" ではなく、上記と:私はこのサンプルの配列を持っている場合カスタムプロパティ付き配列リストの注文
Collections.sort(arrayList);
は仕事を行います。だから私はループのためにこれを行うと、配列リスト内の項目を交換し、それらを適切な場所に置くことを決めたが、配列リストのサイズが動的に変更されているので、私はどの位置を割り当てる必要があるか分からない。
これは正しい方法ではないかもしれないとは思っていますが、どうすればこの問題を解決できるかについての提案があります。今ここに
は、コードの一部です:
明らか// Sample clothing sizes
List<String> availableSizes = new ArrayList<>(tempSizes);
// Sorting array, only works for "34", "38", "36" and etc
Collections.sort(availableSizes);
if (availableSizes.size() > 0) {
for (int i = 0; i < availableSizes.size(); i++) {
if (availableSizes.get(i).equals("XS")) {
Collections.swap(availableSizes, i, 0);
} else if (availableSizes.get(i).equals("S")) {
Collections.swap(availableSizes, i, 1);
} else if (availableSizes.get(i).equals("M")) {
Collections.swap(availableSizes, i, 2);
} else if (availableSizes.get(i).equals("L")) {
Collections.swap(availableSizes, i, 3);
} else if (availableSizes.get(i).equals("XL")) {
Collections.swap(availableSizes, i, 4);
} else if (availableSizes.get(i).equals("XXL")) {
Collections.swap(availableSizes, i, 5);
}
}
}
配列のサイズが5未満であれば、私はエラーを取得します。
あなたはPOJOのリストを作成することができます提案はありますサイズで一覧は2メンバを入れて言いますsizeinCms、sizeinLetters、sizeinCmsを使って簡単に並べ替えることができるようになりました。 st sorted –
しかし、私はsizesInCmとsizesInLettersの両方を取得していません。いずれかは、cmsまたは手紙になります。 –
より保守的な解決策は、サイズとその '値'を格納する列挙型を作成することです - カスタムコンパレータなしでソートできる数値 – MTCoster