java - 如何检查arraylist中的数组是否包含某个值?

标签 java arrays arraylist contains

我有一个数组列表,其中包含字符串类型的数组。我创建数组列表并使用以下代码向其中添加数组:

List<String[]> transaction = new ArrayList<String[]>();

String[] transactionLine = new String[7];
transactionLine[0] = "0";
transactionLine[1] = "1";
//.....
transactionLine[6] = "some value";

transactionLines.add(transactionLine);

现在我想测试其中一个数组是否包含特定值。我这样试过,但它会检查数组而不是数组的元素:

if(transactionLines.contains("some value")) { 
     //Do some stuff with it
}

我知道这行不通,但我现在不知道该怎么做。我在 Stackoverflow 上找不到任何关于此的帖子(无论如何都没有针对此问题的逻辑搜索词)。

注意:我在数组列表中选择了这种数组结构,因为我有固定数量的列(如 how to create dynamic two dimensional array in java? 中所建议)。

非常感谢任何帮助!

最佳答案

@assylias 建议使用面向对象的方式是好的,但他的示例没有说明列表是否包含一个属性具有特定值的事务。此示例执行以下操作:

public class Test {

    public static void main(final String[] args) {
        final List<TransactionLine> transaction = new ArrayList<>();

        transaction.add(new TransactionLine(1, "some value"));
        transaction.add(new TransactionLine(2, "another value"));
        transaction.add(new TransactionLine(3, "yet another value"));

        System.out.println(containsName(transaction, "some value"));
        System.out.println(containsName(transaction, "non-existent value"));
    }

    // Iterates over all transactions until a transaction is found that has the
    // same name as specified in search
    private static boolean containsName(final List<TransactionLine> transaction, final String search) {
        for (final TransactionLine transactionLine : transaction) {
            if (transactionLine.getName().equals(search)) {
                return true;
            }
        }

        return false;
    }

    private static class TransactionLine {

        private int id;

        private String name;

        public TransactionLine(final int id, final String name) {
            this.id = id;
            this.name = name;
        }

        public int getId() {
            return id;
        }

        public void setId(final int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(final String name) {
            this.name = name;
        }

    }

}

这是一个包含两个类(TransactionTransactionLine)的示例:

测试:

public class Test {

    public static void main(final String[] args) throws Exception {
        final Transaction transaction = new Transaction();

        transaction.add("some name");
        transaction.add("another name");
        transaction.add("yet another name");

        System.out.println(transaction.containsName("some name"));
        System.out.println(transaction.containsName("non-existent name"));
    }

}

交易:

import java.util.ArrayList;
import java.util.List;

public class Transaction {

    private final List<TransactionLine> transactionLines = new ArrayList<>();

    public void add(final String name) {
        final TransactionLine tl = new TransactionLine(transactionLines.size(), name);

        transactionLines.add(tl);
    }

    public boolean containsName(final String name) {
        for (final TransactionLine transactionLine : transactionLines) {
            if (transactionLine.getName().equals(name)) {
                return true;
            }
        }

        return false;
    }

}

交易行:

public class TransactionLine {

    private int id;

    private String name;

    public TransactionLine() {
    }

    public TransactionLine(final int id, final String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(final int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(final String name) {
        this.name = name;
    }

}

关于java - 如何检查arraylist中的数组是否包含某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255862/

相关文章:

c - 重新分配的值未传递回调用函数

arrays - 以最快的方式将特定区间的元素加 1

java - 为什么我的方法没有清除 ArrayList?

java - 在不同网络上使用 RMI

Java: JSONObject.toString() - 在冒号 (":"-> ": "之后添加额外的空间)

java - 如何在JAVA中将多个数组合并成一个矩阵?

java - 在 onTouchEvent 中编辑 ArrayList

java - 比较两个复杂的字符串数组列表

java - 如何检测数据库中存储的谷歌登录帐户?

java - 使用 talend 归档所有日期(前一天和当天)的文件