在数组列表中比较和排序字符串

时间:2012-03-20 08:11:21

标签: java string algorithm sorting

我想基于输入字符串对字符串数组进行排序,例如,我们有这些文本

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

因此,当用户输入united时,输出将为:

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

首先显示united并对其进行排序。

4 个答案:

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

 }

可能有一些简单的方法可以做到这一点。但我希望这能为你提供你想要的输出。

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