0

Androidでは、Excelの並べ替え機能と同様に、優先度に基づいて1行の複数の値をどのように並べ替えますか?

Map<String,String,Float,Integer> shoes; // Style, Color, Price, Quantity
shoes.put("Boots","Red",15.50,5);
shoes.put("Boots","Green",17.50,2);
shoes.put("Skate","Red",12.25,6);
shoes.put("Skate","Blue",13.05,9);
shoes.Sort(1,0,2,3); // sorts by color, then by style

shoes.Sort(2,0,1,3); // sorts by price, then by style
4

2 に答える 2

0

Kaeの提案は正しいですが、次のようなことができます。

  1. インターフェイスComparatorを実装するクラス(内部または非内部)を作成します。これは、比較する対象に関連する推論タイプとして作成する必要があります。
  2. マップの仕様が同じで、パラメーターとしてコンパレーターを使用して、新しいTreeSetを作成します
  3. 作成したツリーシートにすべてのオブジェクトを配置します。

このスレッドを見てください:Map <Key、Value>を値でソートします(Java)

しかし、繰り返しになりますが、必要に応じてクラスを作成することを検討する必要があります。

[] s Neto

于 2012-10-11T21:45:55.897 に答える
0

ここには、一般的なコンパレータの設定をカバーするサンプルコードの良いブロックがあります。複数の列で並べ替えるには複数の呼び出しが必要ですが、目的の効果があります。コレクション仕様から

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.

だからあなたは靴から始めます

public class Shoe
{
  String style;
  String color;
  float price;//There are some reasons to not use float for money, google has lots of blogs etc
  int quantity;
}

次に、上記のリンク先のチュートリアルに基づいてコンパレータを作成し、最終的には次のようにします。

ArrayList<Shoe> shoes = makeShoes();
Collections.sort(shoes,col1Comparator);
Collections.sort(shoes,col2Comparator);
Collections.sort(shoes,col3Comparator);
于 2012-10-11T22:50:51.770 に答える