簡體   English   中英

按降序排列列表 Model Java

[英]Sorting a List Model in descending order Java

我正在嘗試通過拆分一個字符串來對列表 model 進行排序,該字符串比較我分配給任何給定索引的 id 並將其與另一個索引進行比較,它在我第一次按下按鈕時有效,但是,如果我再次按下按鈕,它會移動兩個索引亂序。

如果您需要我的任何幫助,我們將不勝感激 - 請詢問

我正在拆分的字符串示例:

DRAMA,Harry Potter,2,5698750,JK Rowling,500,08/12/2004,Lyle,0,0

給我帶來麻煩的代碼

public void sortByID()
    {
        DefaultListModel tmp = new DefaultListModel();  
        for(int x = 0; x < listModel.size(); x++)
        {
            String[] a = listModel.get(x).toString().split(",");

            for(int y = 0; y < listModel.size(); y++)
            {
                String[] b = listModel.get(y).toString().split(",");

                if(a[2].compareTo(b[2]) > 0 && a[1].equals(b[1]) != true)
                {
                    tmp.add(0, listModel.get(y));
                    listModel.set(y, listModel.get(x));
                    listModel.set(x, tmp.get(0));
                }
            }
        }
    }

該解決方案的一個問題:
測試compareTo是否返回正值,無論x小於還是大於y
例如,假設我們只有 2 個 id 排序為["2", "1"] - 如果x=0, y=1 "2".compareTo("1")將返回>0 ,因此兩個值交換導致["1", "2"]
一些迭代之后, x=1, y=0所以id[x]=="2", id[y]=="1" ,比較( "2".compareTo("1") )將再次返回>0並且值將再次交換。

解決方案: y應始終大於(或始終小於) x (例如for (int y = x + 1; ... )

使用調試器並逐步執行應該有助於了解正在發生的事情......

暫無
暫無

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

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