Java 嵌套树映射-值存储在单个键中
这是我第一次尝试实现树映射。在这种情况下,通过迭代检索到以下数据:Java 嵌套树映射-值存储在单个键中,java,Java,这是我第一次尝试实现树映射。在这种情况下,通过迭代检索到以下数据: A a shape:square fill:yes size:very large B b shape:square fill:yes size:very large C c shape:square fill:yes size:very large 我需要将这些数据存储在树形图中。例
A
a
shape:square
fill:yes
size:very large
B
b
shape:square
fill:yes
size:very large
C
c
shape:square
fill:yes
size:very large
我需要将这些数据存储在树形图中。例如TreeMap(a,TreeMap(a,TreeMap(keySize,sizeAttribute)))
我实施了以下措施:
Map<String, TreeMap<String, TreeMap<String, String>>> squareRPM = new HashMap<String, TreeMap<String, TreeMap<String, String>>>(); //Everytime it changes object create a new squareRPM
TreeMap<String, TreeMap<String, String>> component = new TreeMap<String, TreeMap<String, String>>();
TreeMap<String, String> CompAttr = new TreeMap<String, String>();
我想要的输出是:
[A={a={fill=yes, shape=square, size=very large}}]
[B={b={fill=yes, shape=square, size=very large}}]
但我有一个:
[A={a={fill=yes, shape=square, size=very large},b ={fill=yes, shape=square, size=very large},c={fill=yes, shape=square, size=very large}}]
所有内容都存储在A中。如何解决此问题
多谢各位
解决了
for(String figureName : problem.getFigures().keySet()) { //Iterates through the Name of figures as A, B, C, 1...6
RavensFigure thisFigure = problem.getFigures().get(figureName);
TreeMap<String, TreeMap<String, TreeMap<String, String>>> squareRPM = new TreeMap<String, TreeMap<String, TreeMap<String, String>>>(); //Everytime it changes object create a new squareRPM
for(String objectName : thisFigure.getObjects().keySet()) { //Iterates through components in each A, B, C Ex. A a
RavensObject thisObject = thisFigure.getObjects().get(objectName);
TreeMap<String, TreeMap<String, String>> component = new TreeMap<String, TreeMap<String, String>>();
TreeMap<String, String> CompAttr = new TreeMap<String, String>();
for(String attributeName : thisObject.getAttributes().keySet()) { //Iterates through attributes
String attributeValue = thisObject.getAttributes().get(attributeName);
CompAttr.put(attributeName, attributeValue);
}
component.put(objectName, CompAttr);
squareRPM.put(figureName, component);
for(String figureName:problem.getFigures().keySet()){//遍历图的名称,如A、B、C、1…6
RavensFigure thisFigure=problem.getFigures().get(figureName);
TreeMap squareRPM=new TreeMap();//每次它更改对象时创建一个新的squareRPM
for(String objectName:thisFigure.getObjects().keySet()){//遍历每个A、B、C Ex.A中的组件
RavensObject thisObject=thisFigure.getObjects().get(objectName);
TreeMap组件=新的TreeMap();
TreeMap CompAttr=新的TreeMap();
对于(字符串attributeName:thisObject.getAttributes().keySet()){//遍历属性
字符串attributeValue=thisObject.getAttributes().get(attributeName);
CompAttr.put(attributeName,attributeValue);
}
component.put(objectName,compatr);
平方RPM.put(图名称、部件);
//
for(条目:squareRPM.entrySet()){
String key=entry.getKey();
TreeMap value=entry.getValue();
System.out.println(键+“=>”+值);
}
}
}
问题是我在创建每个树映射>在映射中放置一个映射通常是一个坏主意,因为它会混淆每个人。使用清晰的命名实现自己的类。这些类可以在内部使用其他自定义类的映射(可以再次包含映射)。是的,我曾想过构建类,但我对Java是新手,这是第一次尝试将属性放在一个可以比较它们的位置。我将试试你的建议。非常感谢你!我怀疑它是否能被制造出来。
for(String figureName : problem.getFigures().keySet()) { //Iterates through the Name of figures as A, B, C, 1...6
RavensFigure thisFigure = problem.getFigures().get(figureName);
TreeMap<String, TreeMap<String, TreeMap<String, String>>> squareRPM = new TreeMap<String, TreeMap<String, TreeMap<String, String>>>(); //Everytime it changes object create a new squareRPM
for(String objectName : thisFigure.getObjects().keySet()) { //Iterates through components in each A, B, C Ex. A a
RavensObject thisObject = thisFigure.getObjects().get(objectName);
TreeMap<String, TreeMap<String, String>> component = new TreeMap<String, TreeMap<String, String>>();
TreeMap<String, String> CompAttr = new TreeMap<String, String>();
for(String attributeName : thisObject.getAttributes().keySet()) { //Iterates through attributes
String attributeValue = thisObject.getAttributes().get(attributeName);
CompAttr.put(attributeName, attributeValue);
}
component.put(objectName, CompAttr);
squareRPM.put(figureName, component);
for(Entry<String, TreeMap<String, TreeMap<String, String>>> entry : squareRPM.entrySet()) {
String key = entry.getKey();
TreeMap<String, TreeMap<String, String>> value = entry.getValue();
System.out.println(key + " => " + value);
}
}
}