2010-05-31 3 views
2

У меня есть текстовый файл со списком алфавитов и цифр. Я хочу сделать сортировку w.r.t этого числа с помощью java.Как сделать сортировку с помощью java

Мой текстовый файл выглядит следующим образом:

a--->12347 
g--->65784 
r--->675 

Я прочитал текстовый файл и я разбить его. Но я не знаю, как выполнять сортировку. Я новичок в java. Пожалуйста, дайте мне представление.

Мой выход хочет быть

g--->65784 
a--->12347 
r--->675 

Пожалуйста, помогите мне. Заранее спасибо.

Моего кодирование

String str = ""; 
BufferedReader br = new BufferedReader(new FileReader("counts.txt")); 
while ((str = br.readLine()) != null) { 
String[] get = str.split("---->>"); 

Когда я искать в Интернете все упоминаемое в типе массивов. Я пытался. Но не использовать. Как включить get [1] в массив.

int arr[]=new int[50] 
    arr[i]=get[1]; 
    for(int i=0;i<50000;i++){ 
       for(int j=i+1;j<60000;j++){ 
        if(arr[i]>arr[j]){ 
         System.out.println(arr[i]); 
        } 
       } 
+0

Наиболее практичным способом, вероятно, является использование 'Collections.sort()' и 'java.util.TreeMap', но если вы делаете массивы, вы, вероятно, сделаете это по-другому. –

ответ

0

, а не дать вам код, я бы указал вам по следующему пути: TreeMap. Читайте, учитесь, осуществлять

7

Вы должны использовать методы Arrays.sort() или Collections.sort(), что позволяет вам указать пользовательские Comparator и реализовать такой компаратор, чтобы определить, каким образом строки должны быть сравнены с целью сортировки (так как вы не требуется лексикографический порядок по умолчанию). Похоже, что это должно включать синтаксический анализ их как целых чисел.

1

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

0

То, что вы хотите сделать, это:

1) преобразовать число в целых 2) Храните их в коллекции 3) использовать Collections.sort() для сортировки списка.

4

Ваш str.split выглядит хорошо для меня. Используйте Integer.parseInt, чтобы получить int из строки, представляющей число. Затем поместите «метки» и цифры в TreeMap, как описано ниже. TreeMap сохранит записи, отсортированные в соответствии с ключами (номера в вашем случае).

import java.util.TreeMap; 
public class Test { 
    public static void main(String[] args) { 
     TreeMap<Integer, String> tm = new TreeMap<Integer, String>(); 
     tm.put(12347, "a"); 
     tm.put(65784, "g"); 
     tm.put(675, "r"); 

     for (Integer num : tm.keySet()) 
      System.out.println(tm.get(num) + "--->" + num); 
    } 
} 

Выход:

r--->675 
a--->12347 
g--->65784 

От the API for TreeMap:

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

+0

+1 для выдачи примера кода. Хотя люди против этого, он по-прежнему очень подходит для новых программистов, чтобы увидеть и использовать шаблон кодирования. || В качестве сноски вы должны просто использовать 'import java.util.TreeMap;' в отличие от подстановочного знака '*'. –

+0

Обновлено. (Клише). – aioobe

0

Я предполагаю, что вы являетесь абсолютным новичком.

Вы правы до раздельной части. Вам необходимо немедленно поместить разделительное число в строке или объект (пользовательский объект)

Вы бы создать что-то вроде:

class MyClass //please, a better name, 
{ 
    //and better field names, based on your functionality 
    int number; 
    String string; 
} 

Примечания: Вы должны выполнить equals и hashCode

После того, как split (ваш первый фрагмент), создайте объект этого класса, поместите get[0] в строку и get[1] в число (после преобразования строки в целое число)

Вы размещаете этот объект в TreeMap.

Теперь у вас есть отсортированный список.

Я специально не уточнил детали. Не стесняйтесь Google для любого термина/фразы, которую вы не понимаете. Таким образом, вы понимаете, а не копируете вставку кода.

Смежные вопросы