Java ArrayList检查while循环中的相同输入

时间:2017-07-19 13:27:24

标签: java string if-statement arraylist while-loop

如何在忽略案例时检查arraylist中是否有相同的字符串? 提前抱歉,我是StackOverflow的新手。

新编辑: 这是我到目前为止在学校使用NetBeans所做的。谢谢你们! 所以老师想要的是以下内容:         / *         询问姓名,输入的姓名必须在没有双重符号的情况下排序。         表示如果输入两次相同的名称,则不会显示第二个名称         并添加到arrayList中。第一封信必须是上装的         休息更低。         附加:即使使用不同的输入拼写。         示例:Mike - > miKE - >梅根 - >露西 - >停         sout:露西,梅根,迈克。         Addition_2:仅输入多个输入的名称。         * /

FreeT

4 个答案:

答案 0 :(得分:4)

您有多种选择:

<强> 1 如果最后无关紧要,您可以随时在lowerCaser

中添加元素
listednames.add(entry.toLowercase());

同样entry = entry.trim().toLowercase()这样你的包含检查就可以了

<强> 2 使用方法手动检查:

for (String name : listednames) {
    if (name.equalIgnoreCase(entry)) {
        continue;
    }
}

或使用java 8功能:

if( listednames.stream().anyMatch(entry::equalsIgnoreCase) ){
      continue;
}

答案 1 :(得分:2)

您必须手动循环浏览ArrayList并逐个比较条目。

for (String s : listednames) {
    if (s.equalIgnoreCase(entry)) {
        continue;
    }
}

答案 2 :(得分:0)

如果你想在线性时间内做到这一点非常简单。你应该在check和add方法中使用toUpperCase()(或toLowerCase()),你可以尝试使用这个修改过的代码:

ArrayList listednames = new ArrayList<>();

while (true) {
    String entry = JOptionPane.showInputDialog("name:");
    if (entry == null) {
        break;
    }
    entry = entry.trim();

    if (entry.equalsIgnoreCase("stop")) {
        break;
    }
    if (entry.isEmpty()) {
        continue;
    }
    if (listednames.contains(entry.toUpperCase())) {
        continue;
    }

    listednames.add(entry.toUpperCase());
    Collections.sort(listednames);
    String namen = listednames.toString();
    namen = namen.substring(1, namen.length()-1);
    System.out.println(namen);
}

答案 3 :(得分:0)

如果您喜欢简短:

&#xA;&#xA;
  if(listednames.stream()。anyMatch(entry :: equalsIgnoreCase)){&#xA;  
&#xA;&#xA;

尽管for循环通常更喜欢使用流来实现可读性,性能和调试,但我想我会把它放在这里。

& #xA;&#xA;

因为我确实喜欢更少的行(你可能没有意识到这一点):

&#xA;&#xA;
  String entry = JOptionPane .showInputDialog(“name:”);&#xA; entry = Optional.ofNullable(entry).orElse(“STOP”)。trim();&#xA; if(“STOP”.equalsIgnoreCase(entry)){& #xA;打破;&#XA;}&#XA;  
&#XA;