簡體   English   中英

嘗試對Arraylist的ArrayList進行排序

[英]Trying to sort an ArrayList of Arraylists

試圖對我包含以下內容的Arraylist進行排序

[[2/11, 11/48], [8/35, 35/288], [16/43, 43/288], [4/5, 5/16], [75/152, 19/210], [135/163, 163/1680]]

目前,我已經使用以下方式對此Arraylist進行了排序:

for(int j = 0; j < knowledgeD.size()-1; j++) {

            if(knowledgeD.get(j).get(0).compareTo(knowledgeD.get(j+1).get(0)) == 1) {
                Collections.swap(knowledgeD, j, j+1);   

這會對真值進行排序,這是每個括號中的第一個值,所以2/11 8/35等,依數值排序,從小到大,

但是,我注意到它在中間的某個地方弄亂了,還沒有命令4/5和75/132,所以我不知道為什么。 我試圖添加此故障安全代碼來做顯而易見的事情,

for(int k = 0; k < knowledgeD.size()-3; k++) {
                    if(knowledgeD.get(k).get(1).compareTo(knowledgeD.get(k+1).get(1)) == -1){
                        Collections.swap(knowledgeD, k-1, k+1);

但是,由於我已實現此代碼,因此我不斷使索引超出范圍錯誤。 誰能伸出援手?

干杯,

據我了解,您嘗試根據子列表的第一個元素的自然順序對列表進行排序。 在Java中,這通常是由比較器完成的,無需向任何對象添加新方法:

  Comparator<List<Comparable>> order = new Comparator<List<Comparable>>() {
    @Override
    public int compare(List<Comparable> o1, List<Comparable> o2) {
      return o1.get(0).compareTo(o2.get(0));
    }
  };
  Collections.sort(knowledgeD, order);

暫無
暫無

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

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