簡體   English   中英

使用字符串和列表bean作為參數對樹圖中的值進行排序

[英]Sorting values in a tree map with string and list bean as parameters

上一個問題的延續: 用Java對地圖進行排序

我正在嘗試一種解決方案,根據其值對樹圖進行排序

讓我宣布地圖

Map<String, List<Bean>> sortedBeanMap =new TreeMap<String,List<Bean>>();

我創建了一個單獨的比較器方法來比較這些值。

 public class MapSort {
    public static Map sortByValue(Map unsortedMap){

    Map sortedMap = new TreeMap(new ValueComparator(unsortedMap));
    sortedMap.putAll(unsortedMap);
    return sortedMap;
  }
  public static Map sortByKey(Map unsortedMap){
    Map sortedMap = new TreeMap();
    sortedMap.putAll(unsortedMap);
    return sortedMap;
  }
}

ValueComparator類

 public class ValueComparator implements Comparator {
  Map map;

  public ValueComparator(Map map){
    this.map = map;
  }
  public int compare(Object keyA, Object keyB){

    Comparable valueA = (Comparable) map.get(keyA);
    Comparable valueB = (Comparable) map.get(keyB);

    System.out.println(valueA +" - "+valueB);

    return valueA.compareTo(valueB);

  }
}

我知道值應該是與Work相當的字符串類型。但是在我的情況下,它將是一個bean列表。那么如何使比較器在我的情況下起作用?

我在這個問題上停留了一陣子..任何建議和想法都很棒。

預先謝謝你們...

由於這是家庭作業,因此不會提供完整的代碼。

您走在正確的軌道上。 不要為您的對象創建一個類,並為Comparable實現所需的方法。 您可以決定具有一個bean列表的兩個對象的“順序”是什么:應該小於另一個,因為list元素的數量較少; 因為各個列表元素的名稱都較小。 或其他定義明確的排序?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM