[英]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.