2012-03-20 2 views
0

Я хочу, чтобы отсортировать массив строк, основанный на на входной строке, например, тонкие мы имеем эти текстовыеСравнить и сортировки строки в списке массива

"united state" 
"sample united" 
"united kingdom" 
"greece" 
"uzbakestan" 

поэтому, когда пользователь вошел united, выход будет:

"united state" 
"united kingdom" 
"sample united" 
"greece" 
"uzbakestan" 

сначала показывает united и сортировать их.

+2

пример не упорядочен никоим образом. Каковы ваши критерии сортировки? – oers

+0

это не сортировка. –

+0

Ни один из приведенных выше примеров не сортируется, если моя алфавитная последовательность не сбрасывается с самого начала. – Nishant

ответ

6

Я не уверен, я полностью понимаю, что вы после - но если вы хотите, чтобы напечатать строки, которые являются «наиболее близки» к вашей входной строке сначала:

Возможно, вы захотите создать Comparator<String>, который будет сравнивать между 2 строками в соответствии с их levenshtein distance из третьей строки [ваш i nput String].

Используя этот компаратор, вы можете отсортировать массив, используя Arrays.sort(myArray,new MyCustomComparator(inputString)).
Если это ArrayList как название предполагает [противоречивое название и вопрос тела] - вы можете использовать Collections.sort(myList,new MyCustomComparator(inputString))

+0

+1 wow! Не знал этого. – Nishant

+0

Я сделал это, но я не могу сделать конструктор для добавления SortString Значения – Ata

+0

Компаратор myCommandComprator = новый Comparator () { \t \t общественных ИНТОГО сравнения (команда LHS, команда РИТ) { \t \t \t // TODO Автоматически сгенерированный метод заглушки \t \t \t return 0; \t \t} \t}; – Ata

1

использование этого Collections.sort(your_arraylist_obj);

+0

Он не хочет сортировки естественного порядка, здесь должен использоваться пользовательский Компаратор. – amit

+0

@amit: yes m Мне нужен компаратор для резки – Ata

1

если вы используете ArrayList, вы должны использовать Collection к сортировки списка массива.

Например:

Collections.sort(arrayList); 

для просмотра:

Iterator<String> i = a.iterator(); 
    while(i.hasNext()) { 
     System.out.println(i.next()); 
    } 
+0

Он не хочет сортировки естественного порядка, здесь должен использоваться пользовательский Компаратор. – amit

+0

используйте компаратор для вашего пользовательского сортировки и используйте str_array.sort() –

0

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

for(int i=0;i<mylist.size();i++) { 
    //splitting item by space to match with the inputText 
    String[] myString = mylist.get(i); 
    for(int j=0;j<myString.length;j++) { 
     if(myString[j].equals(inputText)) { 
     myNewList.add(mylist.get(i)); 
     break; 
     } 

    } 

}

for(int i=0;i<mylist.size();i++) { 
    if(!mynewList.contains(mylist.get(i))) { 
    myNewList.add(mylist.get(i)); 
    } 

} 

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

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

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