当前位置: 首页 > 知识库问答 >
问题:

如何检查ArrayList中是否包含字符串?包含不起作用

陶文林
2023-03-14

我的代码几乎准备好了,我只是不能解决一个简单的问题。我想在ArrayList中添加和识别码以及附加到它的项目。例如,括号只是为了明确我想做什么,它们不是代码或输出的一部分:

  • 3ZU2SD34:老卷轴(-!添加)
  • 9ZU5SD54:国际足联21(-!添加)
  • 3ZU2SD34:老卷轴(-!未添加,ID已在列表中)
  • 3ZU2SD34:最终幻想(-!未添加,ID已在列表中)
  • 4ZU8SD89:NBA2K22(-!添加)

...等等

我的代码如下:

import java.util.ArrayList;
    import java.util.Scanner;

    public class Main {

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            ArrayList<Item> items = new ArrayList<>();

            while (true) {

                System.out.println("Identifier? (empty will stop)");
                String identifier = scanner.nextLine();

                if (identifier.isEmpty()) {
                    break;
                }

                System.out.println("Name? (empty will stop)");
                String name = scanner.nextLine();

                if (name.isEmpty()) {
                break;
                }
                /*if (!items.contains(identifier)){   This doesn't work
                    items.add(new Item(identifier, name));
                }*/
                
                if (!items.contains(new Item(identifier,name))) {
                items.add(new Item(identifier, name));  //this works fine, but I want to skip even if only the ID is equal
                }
            }

            System.out.println("");
            System.out.println("==Items==");
            for (Item lines : items) {
               System.out.println(lines);
            }
        }
    }

输出:

Identifier? (empty will stop)
1234
Name? (empty will stop)
Test1
Identifier? (empty will stop)
1234
Name? (empty will stop)
Test2
Identifier? (empty will stop)
1234
Name? (empty will stop)
Test1
Identifier? (empty will stop)
5555
Name? (empty will stop)
Test3
Identifier? (empty will stop)


==Items==
1234: Test1
1234: Test2
5555: Test3

我的代码添加了所有相同的项目,但我希望它也跳过相同的标识。我怎么做?也许有这么简单的方法,但我想不出来。

共有1个答案

梁宪
2023-03-14

您的列表包含一个Item对象,该对象的. get标识符()方法将返回1234

当然,这与字符串1234不同,因此,包含返回false。

就像我在问你:嘿,这个苹果园里有这幅苹果画吗?当然不是:果园里没有画。

您必须自己循环整个列表(编写for循环或使用streamapi)以进行检查。Java是面向对象的,因此,对象具有“标识符”的概念不是一般原则。这是您的类所拥有的,而不是其他类。

或者,您的列表

 类似资料:
  • 我的代码几乎准备好了,我只是不能解决一个简单的问题。我想在ArrayList中添加识别码和附加到它的项。例如,括号只是为了明确我想做什么,它们不是代码或输出的一部分: 3ZU2SD34:长者卷轴(-!已添加) 9ZU5SD54:Fifa 21(-!新增) 3ZU2SD34:长者卷轴(-!未添加,ID已在列表中) 3ZU2SD34:最终幻想(-!未添加,ID已在列表中) 4ZU8SD89:NBA 2

  • 问题内容: 我想检查我的字符串是否包含+字符。我尝试了以下代码 但是它没有给出预期的结果。 问题答案: 您需要此: 类的方法不使用正则表达式作为参数,而是使用普通文本。 编辑: 输出:

  • 问题内容: 我需要检查字符串是否包含数字。任何数字。字符串是否为数字,而不是数字,但包含一个数字。 例子: ‘test’=没有数字。 ‘test2’=包含数字。 问题答案: 使用正则表达式: 不使用正则表达式:

  • 我正在寻找一个运算符,它允许我检查字段的值是否包含某个字符串。 比如: 可能吗?

  • 所以我一辈子也想不出来。我正在尝试编写一个程序,提示用户输入电话号码。这将作为字符串输入,并在稍后的程序中转换为整数数组。然而,我现在遇到的情况是验证用户输入的字符串是否仅限于!!!包含2-9之间的数字。我已经尝试了。Contains方法和。Match方法,但是使用这些方法总是提供错误的结果。如果有人能提供一些关于如何解决这个问题,我将非常感谢。提前感谢。 以下是我目前掌握的信息:

  • 问题内容: 说我有一个ArrayList: 我希望在我说arrayList.containsSubString(’string1’);时返回arrayList的第一个元素。除了遍历元素的每个元素并检查该元素字符串的子字符串之外,该如何做? 问题答案: 我能想到的唯一方法是执行以下操作: 虽然不知道这是否被认为是好的做法。