簡體   English   中英

如何按升序對2D字符串數組進行排序?

[英]How do i sort a 2d String array in ascending order?

我有一個問題,如何將數組按升序排序。 我知道如何做一個數組,但是我不知道這樣的數組的語法或如何解決這個問題。 這是數組。

 String[][] store = {       
        {"Alumni Drink ware", "Gifts", "$25.00"},
        {"Binders", "School Supplies", "$3.00"},
        {"Book bag", "School Supplies", "$20.00"},
        {"Fabulous Desserts", "Textbooks", "$25.00"},
        {"Folders", "School Supplies", "$1.00"},
        {"Gift Cards", "Gifts", "$25.00"},
        {"Highlighters", "School Supplies", "$2.00"},
        {"Jacket", "Campus Gear", "$65.00"},
        {"JAVA Programming", "Textbooks", "$150.00"},
        {"Network Solutions", "Textbooks", "$75.00"},
        {"Pencils", "School Supplies", "$1.00"},
        {"Pens", "School Supplies", "$2.00"},
        {"Shorts", "Campus Gear", "$10.00"},
        {"Sweatshirts", "Campus Gear", "$40.00"},
        {"T-shirts", "campus Gear", "$15.00"},
        {"Web Design Ideas", "Textbooks", "$55.00"}};

我正在嘗試對最后一列的數組進行排序,或者您只是遍歷整個數組。 我在這里完全迷失了,將不勝感激。

Comparator類使您可以編寫排序算法。 然后,您可以將該Comparator類算法合並到像Arrays.sort(...)這樣的類中,並將其作為參數。

Arrays.sort(store,new PriceComparator());

PriceComparator是一個新類,例如:

public class PriceComparator implements Comparator<String[]>{
    public int compare(String[] arg1, String[] arg2){
        String cost1 = arg1[2].substring(1);
        String cost2 = arg2[2].substring(1);

        BigDecimal value1 = new BigDecimal(cost1);
        BigDecimal value2 = new BigDecimal(cost2);

        return value1.compareTo(value2);
    }
}

如果要按項目名稱排序,則可以創建另一個比較器,然后使用它進行排序。 例如:

Arrays.sort(store,new ItemNameComparator());

public class ItemNameComparator implements Comparator<String[]>{
    public int compare(String[] arg1, String[] arg2){
`enter code here`
    }
}

簽出列比較器 它顯示了如何創建一個簡單的Comparator以對特定列進行排序:

public class Column0Comparator implements Comparator<String[]>
{
    public int compare(String[] array, String[] anotherArray)
    {
        return array[0].compareTo( anotherArray[0] );
    }
};

它還提供了一個通用比較器,您可以在數組或列表中的任何列上重用。

這是一種蠻力方法:讓我們假設1個元素是一個完整的行(即,連續三列)。 您有10個元素,即10個此類行,並且想要執行排序。

使用任何算法(例如冒泡排序,插入排序,選擇排序等)對這10個元素進行排序。 並且,要比較兩個元素,請在連續三列的基礎上執行比較。

if(arr[0][0] > arr[1][0] )
   {
        // perform swaping of entire row 
    }
   else
    {
       if(arr[0].[2] > arr[1][2])
         {
             //perform swaping of entire row
         }
     }

暫無
暫無

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

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