我有一个问题,如何按升序对此数组进行排序。我知道如何做一个单一的数组但是,我不知道像这样的数组的语法或如何去做这个问题。这是阵列。
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"}};
我正在尝试对数组进行排序,查看最后一列,或者您只是遍历整个数组。我完全迷失在这里,并希望得到帮助。
答案 0 :(得分:0)
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);
}
}
如果您想按项目名称排序,可以创建另一个Comparator并对其进行排序。例如:
Arrays.sort(store,new ItemNameComparator());
public class ItemNameComparator implements Comparator<String[]>{
public int compare(String[] arg1, String[] arg2){
`enter code here`
}
}
答案 1 :(得分:0)
结帐Column Comparator。它显示了如何创建一个简单的Comparator
来对特定列进行排序:
public class Column0Comparator implements Comparator<String[]>
{
public int compare(String[] array, String[] anotherArray)
{
return array[0].compareTo( anotherArray[0] );
}
};
它还提供了一个通用的Comparator,您可以在Array或List中的任何列上重用它。
答案 2 :(得分:0)
这是一种蛮力方法: 让我们假设1个元素是一个完整的行(即一行中的三个列)。 你有10个元素,即10种这样的行,你想要进行排序。
使用任何算法(如冒泡排序,插入排序,选择排序等)对这10个元素进行排序。并且,为了比较2个元素,在连续三列的基础上进行比较。即
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
}
}