java - 哪个 Java Collection 最适合这种情况

标签 java

在我的应用程序中,我有带有唯一键的小表(文件)(其中大多数有两个或多个字段 - 组合键)。我想为每个小表创建一个类并将数据加载到 java 集合中。该对象将读取文件并将数据加载到 java 集合中。然后,我想通过键值从该集合中获取数据,以便我可以访问所有字段。我的问题是我应该使用哪个集合或者说哪个集合支持多个键?一个例子的链接会很棒。提前致谢!

最佳答案

假设我正确阅读了您的问题(关于“多个键”存在一些含糊之处),您想要的是为键本身定义一个包含多个字段并实现 equals() 的类和 hashCode() ,这样对象就可以用作 HashMap 键。

这是一个非常简单的框架实现(未经测试,省略了一些错误处理):

public class MyKey
{
    private String  part1 = null;
    private Integer part2 = null;
    public MyKey(String part1, int part2)
    {
        this.part1 = part1;
        this.part2 = part2;
    }

    @Override
    public boolean equals(Object o)
    {
        if (o == null || !(o instanceof MyKey)) return false;
        return this.part1.equals(((MyKey)o).part1) && this.part2.equals(((MyKey)o).part2);
    }

    @Override 
    public int hashCode()
    {
        return this.part1.hashCode() + this.part2.hashCode();
    }
}

关于java - 哪个 Java Collection 最适合这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848364/

相关文章:

java - 如何针对故障点确保生产者和消费者应用程序之间的kafka事务同步?

java - 我应该使用哪个 Java 模板系统来生成电子邮件?

java - 无法创建 Java 虚拟机,它表示不支持认可

java - 从字节数组创建对象(使用构造函数)

java - 我可以在构建时使用 Ant 在我的 Android 项目中设置一些静态变量吗?

java - 比较器参数

java - 如何使用cacheApi在play框架中设置清理缓存超时?

java - C++ 与 Java 中的 md5 base64 编码器

java - 在单个 JVM 中和跨多个 JVM 使用 java 文件锁

java - 无法将 InputStream 对象传递给 Java Sound API