我想基于输入字符串对字符串数组进行排序,例如,我们有这些文本
"united state"
"sample united"
"united kingdom"
"greece"
"uzbakestan"
因此,当用户输入united
时,输出将为:
"united state"
"united kingdom"
"sample united"
"greece"
"uzbakestan"
首先显示united
并对其进行排序。
答案 0 :(得分:6)
我不确定我完全理解你的意思 - 但是如果你想首先打印与输入字符串“最相似”的字符串:
你可能想要创建一个Comparator<String>
,它将根据第3个字符串[你的输入字符串]中的levenshtein distance来比较2个字符串。
使用此比较器 - 您可以使用Arrays.sort(myArray,new MyCustomComparator(inputString))
对数组进行排序。
如果这是ArrayList
,如标题建议[冲突的标题和问题正文] - 您可以使用Collections.sort(myList,new MyCustomComparator(inputString))
答案 1 :(得分:1)
使用此Collections.sort(your_arraylist_obj);
答案 2 :(得分:1)
如果使用ArrayList,则必须使用 Collection 对数组列表进行排序。
例如:
Collections.sort(arrayList);
查看:
Iterator<String> i = a.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
答案 3 :(得分: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));
}
}
可能有一些简单的方法可以做到这一点。但我希望这能为你提供你想要的输出。
首先,它会将包含输入文本的所有字符串添加到新列表中,然后添加剩余的字符串。