我需要一些java比较器的帮助。我需要通过它们包含的单词数来比较字符串。
例如,“你好”出现在“我看见”之前,它出现在“我看见你”之前。
任何人都有任何想法我会怎么做?提前感谢您提供任何帮助。
答案 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;
}
}