2017-08-11 215 views
0

我有:Hashmap<String,List<String>>我想排序它Keys當我嘗試排序它和cliked活動按鈕我的模擬器關閉應用程序。我該如何解決它? 我的我的應用程序中的活動看起來像現在:排序錯誤:Hashmap <String,List <String>>

ScreenShot

我想對它進行排序,如:01,02,03,04,05等

這裏我的代碼塊:

InsidesActivity.class:

public class InsidesActivity extends AppCompatActivity { 
    HashMap<String, List<String>> Insides_Categories; 
    List<String> List_Items; 
    ExpandableListView expandableListView; 
    Expandible_List ExpListClass; 
    Toolbar tb; 
    int lastPosition = -1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_insides); 
     expandableListView = (ExpandableListView) findViewById(R.id.explist); 


      Insides_Categories = DataProvider.getInfo(); 
      List_Items = new ArrayList<String>(Insides_Categories.keySet()); 

我試過此塊:

//  List<Map.Entry<String,List<String>>> entries = new ArrayList<Map.Entry<String,List<String>>>(Insides_Categories.entrySet()); 
//  Collections.sort(entries, new Comparator<Map.Entry<String,List<String>>>() { 
//   public int compare(Map.Entry<String,List<String>> l1, Map.Entry<String,List<String>> l2) { 
//    return l1.getValue().get(0).compareTo(l2.getValue().get(0)); 
//   } 
//  }); 

  ExpListClass = new Expandible_List(this, Insides_Categories, List_Items); 
      expandableListView.setAdapter(ExpListClass); 
     } 
    } 
+1

請添加您的錯誤日誌 –

+0

@AyushKhare的IDE didnt拋出一個錯誤。剛剛關閉應用程序,當我嘗試加入此活動。 –

+0

地圖不可排序。 – shmosel

回答

0

我解決我的問題,當我整理我的表像這樣;現在

List_Items = new ArrayList<String>(Insides_Categories.keySet()); 
Collections.sort(List_Items); 

它的模樣:

ScreenShor

1

Use LinkedHashMap to maintain your sorting order. HashMap doesn't keep order as data inserted.

public static void main(String[] args) { 
    Map<String, List<String>> map = new LinkedHashMap<>(); 
    map.put("b", Arrays.asList("1", "2")); 
    map.put("a", Arrays.asList("2", "1")); 
    map.put("c", Arrays.asList("2", "1", "6")); 
    map.put("d", Arrays.asList("2", "1", "5")); 
    Stream<Entry<String, List<String>>> sorted = map.entrySet().stream().sorted(Map.Entry.comparingByKey()); 
    System.out.println("map:" + map); 
    map = sorted.collect(new Supplier<Map<String, List<String>>>() { 

     @Override 
     public Map<String, List<String>> get() { 
      return new LinkedHashMap<>(); 
     } 
    }, new BiConsumer<Map<String, List<String>>, Entry<String, List<String>>>() { 

     @Override 
     public void accept(Map<String, List<String>> t, Entry<String, List<String>> u) { 
      t.put(u.getKey(), u.getValue()); 
     } 
    }, new BiConsumer<Map<String, List<String>>, Map<String, List<String>>>() { 
     @Override 
     public void accept(Map<String, List<String>> t, Map<String, List<String>> u) { 
      // TODO 
     } 
    }); 
    System.out.println("map:" + map); 
} 
相關問題