2014-07-09 71 views
-2

我有一个大的字符串列表的名称和自动填充功能的组合框。 目前我只是根据包含过滤。 但是组合框中的顺序并不好。如何根据字符串的等同性对字符串列表进行排序?

有没有一种简单的方法来根据与字符串的等同性对字符串列表(包含后)进行排序?

例子:

Currently: 
combobox input -> Neustadt 
List<String> 1. Bad Neustadt an der Saale 
      2. Bremen-Neustadt 
      3. ... 
      n. Neustadt 
      n+1. Neustadt/Pelzerhaken 

Wandted: 
1. Neustadt 
2. Neustadt/Pelzerhaken 
3. ... 
n. Bremen-Neustadt 

编辑 基于切赫Gladkikh的回答我的解决方案是以下方法:

public static List<String> sortListCompairedToEquality(List<String> list, String str) { 

    if (list == null || str == null) 
    return null; 

    final String compStr = str.toLowerCase(); 

    Collections.sort(list, new Comparator<String>() { 
    @Override 
    public int compare(String s1, String s2) { 
     s1 = s1.toLowerCase(); 
     s2 = s2.toLowerCase(); 

     if (s1.equals(compStr) && !s2.equals(compStr)) { 
     return -1; 
     } else if (!s1.equals(compStr) && s2.equals(compStr)) { 
     return 1; 
     } else if (s1.indexOf(compStr) < s2.indexOf(compStr)) { 
     return -1; 
     } else if (s1.indexOf(compStr) > s2.indexOf(compStr)) { 
     return 1; 
     } 
     return 0; 
    } 
    }); 

    return list; 
} 
+4

您可以实现'比较器'接口,并定义'比较'方法中要比较的方式。 – TheLostMind

+0

使用'Collection.sort(列表)' –

+2

@NinadPingale - 没有自定义的'Comparator'实现,'Collections.sort()'不会帮助..字符串将按*自然顺序*排序。 – TheLostMind

回答

1

目前尚不清楚是否有什么规则“平等为字符串”心里。一般来说,如果你要根据一定的规则使用“排序”的方法与自定义比较排序:

java.util.Collections.sort(listOfStrings, new Comparator<String>() { 
     @Override 
     public int compare(String s1, String s2) { 
      return 0; // Your comparison logic goes here 
     } 
    }); 

见的javadoc了java.util.Comparator接口的细节。

+0

谢谢。我不知道比较器。但是我完全按照我的要求工作。我在我的文章中添加了我的解决方案。通过阅读我的代码,最终你可以理解我想要的东西。 ;)(抱歉我的英语不够好,不足以解释我的需要)。 – Spen

相关问题