java比较器,按字数比较字符串

时间:2011-03-15 02:25:56

标签: java comparator

我需要一些java比较器的帮助。我需要通过它们包含的单词数来比较字符串。

例如,“你好”出现在“我看见”之前,它出现在“我看见你”之前。

任何人都有任何想法我会怎么做?提前感谢您提供任何帮助。

4 个答案:

答案 0 :(得分:3)

import java.util.Comparator;
import java.util.StringTokenizer;

public class WordCountComparator implements Comparator<String> {
    public int compare(String str1, String str2) {
        if (str1 == str2 || (str1 == null && str2 == null)) {
            return 0;
        } else if (str1 == null) {
            return -1;
        } else if (str2 == null) {
            return 1;
        }

        int len1 = new StringTokenizer(str1, " \t\r\n").countTokens();
        int len2 = new StringTokenizer(str2, " \t\r\n").countTokens();
        return len1 < len2 ? -1 : len1 == len2 ? 0 : 1;
    }
}

答案 1 :(得分:1)

为String类型编写比较器。在compareTo方法中,只需调用string.split(“”)将其分解为'words'(如果这足够),然后返回这两个整数之间的比较。

答案 2 :(得分:1)

string.split(" ")将返回一个数组,其中每个元素都是一个单词。因此,比较数组中的元素数量将为您提供粗略的实现。显然你可能需要处理换行符,制表符等,所以请记住这一点。

Apache commons也有一些有用的方法可以做到这一点。

答案 3 :(得分:0)

 public class StringComparator implements Comparator<String> {

      public int compare(String o1, String o2) {
        if(o1==null && o2 ==null)
        return 0;
        String[] bo1 = o1.split("\\s");
        String[] bo2 = o2.split("\\s");
        return bo1.length >= bo2.length ? bo1.length > bo2.length ? 1 : 0 : -1;
      }
}