Java 使输入忽略小写或大写

Java 使输入忽略小写或大写,java,Java,我创建了一个项目列表,其中包含删除或修改其中一个项目的选项。 假设我正在添加带有大写字母(“Milk”)的项 然后,试图删除“牛奶”它不会让我。 很遗憾,我试着玩一些图珀凯斯或托洛凯斯游戏,但没有成功 在主要课堂上: public static void removeItem() { System.out.println("Please enter the item you want to remove"); String itemToRemove =

我创建了一个项目列表,其中包含删除或修改其中一个项目的选项。 假设我正在添加带有大写字母(“Milk”)的项 然后,试图删除“牛奶”它不会让我。 很遗憾,我试着玩一些图珀凯斯或托洛凯斯游戏,但没有成功

在主要课堂上:

    public static void removeItem() {
    System.out.println("Please enter the item you want to remove");
    String itemToRemove = in.next();
    groceryList.removeItem(itemToRemove);
}
在列表类中:

  public void removeItem(String itemToRemove) {
    if (groceryList.contains(itemToRemove)) {
        groceryList.remove(itemToRemove);
        System.out.println("You've removed " + itemToRemove + " from the list!");
    } else {
        System.out.println("The item you've entered are not in the list!");
    }
}
输出:


无法使用contains()和remove()方法检查项目。您需要使用蛮力方法,如:

 public void removeItem(String itemToRemove) {
    int i=0;
    while(i<list.size()){
    if (list.get(i).equalsIgnoreCase(itemToRemove)){
        list.remove(i);
        break;
    }
    i++;
}

}您可以使用带有自定义
比较器的
树集,而不是
列表

private final Set<String> groceries = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
private final Set groceries=new TreeSet(String.CASE不区分大小写\u顺序);
然后您可以将
groceryList
重命名为
groceries
,您的代码应该可以正常工作


使用
集合的唯一缺点是,添加项目的顺序不再保留,您只能添加一次项目。

我将在您收到的好选项中添加另一个选项

如果要使用
列表
,可以执行以下操作:

groceryList.removeIf(s -> s.equalsIgnoreCase(itemToRemove));
(请注意,如果有多个具有该名称的项目,它将删除所有项目。如果您只想删除一个项目,可以使用此选项)

要检查
杂货店列表是否包含要删除的
项目,请执行以下操作:

groceryList.stream().anyMatch(s -> s.equalsIgnoreCase(itemToRemove))
此选项牺牲了时间复杂性,但它可能与您的用例无关

groceryList.stream().anyMatch(s -> s.equalsIgnoreCase(itemToRemove))