2012-03-20 116 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)); 
    } 

} 

可能是有一些简单的方法来做到这一点。但我希望这会给你你想要的输出。

首先它将所有包含输入文本的字符串添加到新列表中,然后添加剩余的字符串。