java - 是否有类似于 ArrayList 的 Java 类可以做到这一点?

标签 java arrays arraylist

我在编程时有时会遇到这个问题。

假设我有一个包含两列的数据表。第一列是字符串,第二列是整数。

我希望能够将表格的每一行存储到一个动态数组中。所以数组的每个元素都需要保存一个字符串和一个整数。

以前,我只是将表的每一列拆分为两个单独的 ArrayList,然后当我想添加一行时,我会在每个 ArrayList 上调用一次 add() 方法来完成此操作。要删除,我会在同一索引处的每个 ArrayList 上调用一次 remove(index) 方法。

但是有没有更好的办法呢?我知道有像 HashMap 这样的类,但它们不允许重复键。我正在寻找允许重复条目的东西。

我知道可以这样做:

ArrayList<Object[]> myArray = new ArrayList<Object[]>();
myArray.add(new Object[]{"string", 123});

我真的不想每次从数组中取出一个元素时都强制转换为 String 和 Integer,但也许这是不创建我自己的唯一方法?这看起来更让我困惑,我更愿意使用两个 ArrayList。

那么是否有像 ArrayList 这样的 Java 对象可以像这样工作:

ArrayList<String, Integer> myArray = new ArrayList<String, Integer>();
myArray.add("string", 123);

最佳答案

只需创建简单的 POJO 类来保存行数据。不要忘记 equalshashCode 并且更喜欢不可变的解决方案(没有 setter):

public class Pair {
    private String key;
    private Integer value;

    public Pair(String key, Integer value) {
        this.key = key;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public Integer getValue() {
        return value;
    }

    // autogenerated

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Pair)) return false;

        Pair pair = (Pair) o;

        if (key != null ? !key.equals(pair.key) : pair.key != null) return false;
        if (value != null ? !value.equals(pair.value) : pair.value != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = key != null ? key.hashCode() : 0;
        result = 31 * result + (value != null ? value.hashCode() : 0);
        return result;
    }
}

用法:

    List<Pair> list = new ArrayList<Pair>();
    list.add(new Pair("string", 123));

注意:在其他语言中,有针对它的内置解决方案,例如 Scala 中的案例类和元组。

关于java - 是否有类似于 ArrayList 的 Java 类可以做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812172/

相关文章:

Javascript在里面生成代码

java - 在java中通过webservices维护多个 session 请求

python:交换两个数组的部分

java - 创建 SpecificDatumWriter<T> 时出现 NullPointerException

javascript - 从解析的 JSON 字符串创建 4 个数组

java - 使用扫描仪读取文件时出现异常

java - 一辆最大载重量为 500 磅的运输车辆,乘客名单的重量为 [130、170、140、100],shd 返回 [130、170] 以确保安全,正好留下 300 磅

java - 从 JPanel/JFrame 的 JTextfields 添加到商店

java - 使用mybatis将多个表映射到一个集合

java - Spring Boot应用程序内存消耗