Java 在不使用循环构造的情况下,使用布尔值对重复的字表示true或false
+Java 在不使用循环构造的情况下,使用布尔值对重复的字表示true或false,java,Java,+ 公共类测试 { 公共静态布尔输出(字符串[]输入){ for(int i=0;i
公共类测试
{
公共静态布尔输出(字符串[]输入){
for(int i=0;i
我已经成功地运行了一个代码,它告诉我如果字符串数组中有一系列重复的单词,那么它是真是假,但是,如果没有一个循环构造也能找到大小写重复,我怎么能实现这一点呢?使用一个映射,它将字符串列表/数组中的单词作为键(小写单词)应该可以解决您的问题。如果新词已经存在(使用映射中的toLowercase()
检查新词),则可以返回true
您必须显式或隐式地遍历字符串列表或数组至少一次(如果不是for loop
那么for each
loop)(Java8隐藏循环或其他集合的构造函数)查找是否有重复的单词。简而言之,如果没有任何循环,则无法执行此操作。但是,如果要查找隐藏的循环,则可以使用以下方法:
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;
}
在使用数组时,您希望如何在不进行迭代的情况下找到重复项?我实际上对第一个方法的工作原理很感兴趣,请注意解释:)@SamzSakerz ASet
保证没有重复项(重复项不会添加到中).所以数组和集合中元素数量的差异意味着某个地方存在重复。我发现了一个拼写错误:(啊,我知道集合不能包含像地图这样的重复项,但从来没有想过这样使用它
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;
}
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();
}