2015-11-28 3 views
0

У меня вопрос, как вы сортируете этот массив в порядке возрастания. Я знаю, как сделать один массив, но я не знаю синтаксиса для такого массива или как это сделать. Вот массив.Как отсортировать массив 2d String в порядке возрастания?

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

Я пытаюсь отсортировать массив, глядя на последний столбец, или просто пройти через весь массив. Я полностью потерялся здесь и буду благодарен за помощь.

+1

Я не хочу, чтобы просто дать ответ прочь, но я предлагаю смотреть на методы классов 'Arrays',' Comparator', '' Double' и String'. –

+0

спасибо, я хотя бы знаю, где искать сейчас – Ivan

+0

Вы должны поместить их в объекты 'Book' и реализовать для него' Comparator'. Это облегчит обертывание головы вокруг – Alex

ответ

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

Если вы хотите отсортировать по имени элемента, можно создать еще один компаратор и сортировать его с этим. Например:

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

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

Отъезд Column Comparator. Он показывает, как создать простой Comparator для сортировки по определенному столбцу:

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

Он также предоставляет общее назначение компаратор, который можно повторно использовать на любом столбце в массиве или списке.

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