我有一些输入,例如:
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
类的 equals
和 hashcode
方法,因为此类的对象将用作 HashMap 中的键
。
如果您还想支持包版本,只需将此类字段添加到Artifact
类中,并添加适当的构造函数、getters、setters并修改equals
和hashcode
方法相应地。
关于java - 在java中存储更多维度数据的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891295/