1

私はコードを持っています:

    List<ModelMap> nameCustomer = new ArrayList<ModelMap>();

    for (int i=1;i<150;i++) {
                    ModelMap map = new ModelMap();
                    map.put("name", "nazwa " + i);
                    map.put("surname", "nazwisko " + i);
                    map.put("number", "123 ");
                    nameCustomer.add(map);
                }

            ModelMap[] result = new ModelMap[nameCustomer.size()];
            ModelMap[] rowsArray = nameCustomer.toArray(result);

nameCustomer (またはrowsArray) を姓または番号でソートするにはどうすればよいですか?

4

5 に答える 5

1

並べ替え基準を定義するComparatorを実装する必要があります。
その後Arrays.sort、配列やCollections.sortリストに使用したり、すべてをSortedSet(例: TreeSet)にダンプしたりできます。

于 2012-12-03T13:08:01.613 に答える
1

Collections.sort(nameCustomer, comparator)メソッドを使用して、リストを並べ替えることができます。そのためには、Comparator のコードを作成する必要があります。Comparator のコードは次のようになります。

public Comparator<ModelMap> getComparator(final String sortBy){
   if ("surname".equals(sortBy)) {
   return new Comparator<ModelMap>() {
   @Override int compare(ModelMap m1, ModelMap m2) 
    return m1.getSurname().compareTo(m2.getSurname());
   }};} 
     else if (condition) {// ...  }
      else {
        throw new IllegalArgumentException("invalid sort field '" + sortBy + "'"); }
       }

getSurname姓を取得するためのメソッドが ModelMap クラスに記述されていると想定しています。そうでない場合は、上記のコードが機能するように記述します。

さらにヘルプが必要な場合は、こちらをご覧ください。乾杯 !!

于 2012-12-03T13:25:29.577 に答える
0

Collections.Sort パッケージを使用することをお勧めします。リストは、一貫性を維持するために「自然な順序」を維持します。例えば

    List<Name> names = Arrays.asList(nameArray);
    Collections.sort(names);
    System.out.println(names);
于 2012-12-03T13:05:06.467 に答える
0

Colections.sort() を使用して、カスタムの Comparator クラスの実装を提供します。これにより、姓による文字列の比較が行われます。

または、put() と get() の後に一貫性があり、キーがソートされた LinkedHashMap を使用します。

それが役立つことを願っています!

于 2012-12-03T13:07:14.703 に答える
0

リストに独自の反復子を実装できます。これは、指定した内部キーのみを返すようにパラメーター化できます。

次に、標準のソーターを使用して「反復」します。

于 2012-12-03T13:12:24.833 に答える