2017-01-12 3 views
0

Здравствуйте у меня есть некоторый простой код этогоКак отсортировать массив в java?

String[] myString1= {"Hidayat", "20"}; 
    outerArr.add(myString1); 

    String[] myString2= {"Ryan", "10"}; 
    outerArr.add(myString2); 

    String[] myString2= {"irwan", "5"}; 
    outerArr.add(myString2); 

, кто знает, как сортировать массив outerArr с восходящим по номеру?

+0

Какой тип списка вы используете для outerArr? –

+0

http://alvinalexander.com/java/how-sort-java-string-array –

ответ

1

Вы можете использовать Comparator интерфейс для пользовательской сортировки:

Collections.sort(outerArr, new Comparator<String[]>() { 
    public int compare(String[] o1, String[] o2) 
    { 
     // for example you can compare integers 
     return Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]); 
    } 
}); 
+0

thx before, но как, если массив динамический с контуром – user7328700

+0

Ваш массив изменился во время сортировки? – Sergey

+1

Это не в тему на этом посту, но это будет зависеть от вашего «динамического массива». – AxelH

0

Для этого случая я предпочитаю TreeMap класса .Отель TreeMap реализует интерфейс Map, используя дерево. TreeMap обеспечивает эффективное средство хранения пар ключ/значение в отсортированном порядке и позволяет быстро извлекать данные.

TreeMap<String, String> map = new TreeMap<>(); 
map.put("20", "Hidayat"); 
map.put("10", "Ryan"); 
map.put("5", "irwan"); 

Для получения значения от

map.get("10"); // output = Ryan 
+0

Вы должны добавить, что это имеет некоторую стоимость при каждой вставке, подавление, конечно, так что это зависит от использования. Для довольно статической карты это не проблема, для списка, который будет много обновляться, но его нужно будет сортировать (печатать или использовать) время от времени, я бы остался со списком – AxelH

0

Другой способ сделать это, если вы используете Java 8 использует Lambda, сначала создать класс содержит 2 поля членов для строки и числа с геттер для каждый член, а затем назвал этот путь:

outerArr.sort((Person o1, Person o2)->o1.getAge()-o2.getAge()); 

Если вы не хотите, чтобы создать новый класс, который можно назвать:

outerArr.sort((String[] o1, String[] o2)->Integer.parseInt(o1[1])-Integer.parseInt(o2[1])); 
Смежные вопросы