我如何按升序排序2d String数组?

时间:2015-11-28 03:18:41

标签: java arrays sorting

我有一个问题,如何按升序对此数组进行排序。我知道如何做一个单一的数组但是,我不知道像这样的数组的语法或如何去做这个问题。这是阵列。

 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"}};

我正在尝试对数组进行排序,查看最后一列,或者您只是遍历整个数组。我完全迷失在这里,并希望得到帮助。

3 个答案:

答案 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
         }
     }