如何检查一个数组列表是否包含特定字符串?

5

我在这里查找了一下,但我得到的并没有真正起作用。以下是代码,它可以运行,但它不做我期望它做的事情

package bcu.gui;

import java.util.ArrayList;
import java.util.Arrays;

public class compare {

    private static ArrayList<String> list = new ArrayList<String>();

    public static void main(String[] args) {
        list.add("Paul");
        list.add("James");

        System.out.println(list); // Printing out the list

        // If the list containsthe name Paul, then print this. It still doesn't print even though paul is in the list
        if(Arrays.asList(list).contains("Paul")){
            System.out.println("Yes it does");
        }

    }

}

2
Arrays.asList(list)list已经是一个List了...? - MadProgrammer
Arrays.asList(list) creates an object of type ArrayList<ArrayList<String>> - Tesseract
if(Arrays.asList(list).contains("Paul")){ should be if(list.contains("Paul")){ - MadProgrammer
3个回答

9

你不必这样做:

if(Arrays.asList(list).contains("Paul"))

因为标识符 list 已经是一个 ArrayList,所以你需要执行以下操作:

if(list.contains("Paul")){
    System.out.println("Yes it does");
}

2
你没有得到期望的结果的原因是使用了错误的方法。
Arrays.asList(list) 

该方法返回一个新的数组,其中只包含一个类型为数组的元素。如果您的列表包含两个元素[Paul, James],那么Arrays.asList(list)将是[[Paul, James]]。

由'Ousmane Mahy Diaw'提供的问题的正确解决方案。

以下内容也可以适用于您:

 // if you want to create a list in one line
 if (Arrays.asList("Paul", "James").contains("Paul")) {
     System.out.println("Yes it does");
 }
 // or if you want to use a copy of you list
 if (new ArrayList<>(list).contains("Paul")) {
     System.out.println("Yes it does");
 }

0

ArrayList有一个内置函数叫做contains()。因此,如果您想尝试使用内置函数,可以简单地使用这个方法。

list.contains("Your_String")

这将返回布尔值true或false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接