java - 在java中存储更多维度数据的最佳方式?

标签 java list arraylist collections hashmap

我有一些输入,例如:

  package 1 : org.orchestr.something  version= 5.1.3

      uses = org.do.resource   ; version= 1.2.1
      uses = org.test.summer   ; version= 1.5.2


  package 2 : fr.test.something  version= 5.1.3

      uses = com.java.rest     ; version= 1.0.1
      uses = org.osgi.summer   ; version= 1.4.2

  ....

因此,在这些数据中,我有一组由其版本定义的包,以及它们在特定版本中使用的其他包,我想知道存储此类数据的最佳方法/实用方法。

最佳答案

您可以将其建模为工件 map :

import java.util.Objects;

public class Artifact {
    private String name;
    private String version;

    public Artifact(String name, String version) {
        this.name = name;
        this.version = version;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Artifact that = (Artifact) o;
        return version.equals(that.version) &&
                name.equals(that.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(version, name);
    }
}

这里是它的用法:

    public static void main(String[] args) {
        Map<Artifact, Set<Artifact>>  map = new HashMap<>();


        Set<Artifact> dependencies = new HashSet<>();
        dependencies.add(new Artifact("org.do.resource ", "1.2.1"));
        dependencies.add(new Artifact("org.test.summer ", "1.5.2"));

        map.put(new Artifact("org.orchestr.something", "5.1.3"), dependencies);
    }

我必须重写 Artifact 类的 equalshashcode 方法,因为此类的对象将用作 HashMap 中的键。 如果您还想支持包版本,只需将此类字段添加到Artifact类中,并添加适当的构造函数、getters、setters并修改equalshashcode方法相应地。

关于java - 在java中存储更多维度数据的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891295/

相关文章:

java - 谷歌云存储: 401 unauthorized error

java - 如何使用整数值来表示上涨或下跌?

java - Android 中调整大小问题

java - 删除 MySQL 表 JDBC 中的特定项目

java - gwt -ext 中的窗口关闭问题

java - jackson xml 列出被识别为重复键的反序列化

c# - 删除列表的重复项,按 C# 中的属性值选择?

python - 在 Python 中追加列表

java - ArrayList<class> collection.swap 方法

java - Java ArrayList自变量给出预期的<Identifier>