public class Main { public static void main(String[] args) { String[] find2 = {"cool","NOT","NOT,"Cool"}; String[] nofind = {"Fly","poke","ok"; System.out.println(Test.out(find); System.out.println(Test.out(nofind)); } }+public class Test {public static boolean Out(String[] input) { for (int i = 0; i < input.length; i++) { for (int j = 0; j < input.length; j++) { if (input[i].equals(input[j]) && i != j) { return true; } } } return false; }我已经设法运行一个代码,告诉我如果字符串数组中有重复的一系列单词,它是真还是假,但是,如果没有一个循环构造也能找到大写和小写的重复,我怎么能做到这一点?
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
使用Map<String, Integer>
将字符串列表/数组中的单词作为键(小写单词)应该可以解决您的问题。如果地图中已经存在新单词(使用 来检查新单词toLowercase()
),那么您可以返回 true。
您必须显式或隐式(Java8 隐藏循环或其他集合的构造函数)至少遍历字符串列表或数组一次(如果不是for-loop
则for-each
循环)以查找是否重复任何单词。
莫回无
TA贡献1865条经验 获得超7个赞
简而言之,没有任何循环就无法做到这一点。但是,如果您正在寻找隐藏循环,则可以使用:
public static boolean out(String[] input) {
return input.length != new HashSet<String>(Arrays.asList(input)).size();
}
如果您需要忽略大小写,则:
public static boolean out(String[] input) {
return input.length != Arrays.stream(input).map(String::toLowerCase).collect(Collectors.toSet()).size();
}
添加回答
举报
0/150
提交
取消