2012-03-20 114 views
0

我想排序基於輸入字符串字符串數組排序字符串,例如薄,我們有這些文字比較和數組列表

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

所以當用戶輸入united,輸出將是:

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

它首先顯示united並對它們進行排序。

+2

該示例沒有以任何我認可的方式排序。你的分類標準是什麼? – oers 2012-03-20 08:14:17

+0

這不是排序。 – 2012-03-20 08:15:50

+0

上述例子都沒有排序,除非我的字母順序自開始以後纔開始排序。 – Nishant 2012-03-20 08:16:30

回答

6

我不知道我完全理解你所追求的 - 但是如果你想打印的「最相似」的字符串首先輸入您的輸入字符串:

您可能想要創建一個Comparator<String>,它將根據第3個字符串的levenshtein distance來比較2個字符串[您的我輸入字符串]。

使用此比較器 - 您可以使用Arrays.sort(myArray,new MyCustomComparator(inputString))對數組進行排序。
如果這是一個ArrayList之類的標題表明[衝突的標題和質疑的身體 - 你可以使用Collections.sort(myList,new MyCustomComparator(inputString))

+0

+1哇!不知道這一點。 – Nishant 2012-03-20 08:19:42

+0

我做了這一點,但我不能讓構造函數添加SortString價值 – Ata 2012-03-20 08:42:41

+0

比較 myCommandComprator =新的比較(){ \t \t公衆詮釋比較(命令LHS,RHS指令){ \t \t \t // TODO自動生成方法存根 \t \t \t return 0; \t \t} \t}; – Ata 2012-03-20 08:42:49

1

使用本Collections.sort(your_arraylist_obj);

+0

他不想自然排序,應該在這裏使用自定義比較器。 – amit 2012-03-20 08:18:00

+0

@amit:是的我需要cutom比較器 – Ata 2012-03-20 08:21:22

1

如果你使用ArrayList,你必須使用收藏來排序數組列表。

例如:

Collections.sort(arrayList); 

查看:

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

他不希望自然順序排序,這裏應該使用自定義比較器。 – amit 2012-03-20 08:17:50

+0

請使用比較器進行自定義排序,並使用str_array.sort() – 2012-03-20 08:24:09

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

} 

可能是有一些簡單的方法來做到這一點。但我希望這會給你你想要的輸出。

首先它將所有包含輸入文本的字符串添加到新列表中,然後添加剩餘的字符串。