编辑:我有两个对象,我必须将一个对象映射到另一个。问题是属性不完全匹配。我正在映射的对象is flat有一堆getter和setter。一切都非常好,易于使用。
我必须将这个映射到一个具有不同结构的Object,在SecAltIDGrp[]
等组和下面的attritubes中。使用
ObjectToMapTo.setSecAltIDGrp(SecAltIDGrp[])
我有一些重复组,我必须使用来自扁平物体的吸气剂的值进行映射,问题是这样。要映射的对象具有Grps的Array [],它必须由来自扁平对象的各种不同的getter填充。我想不出干净的方法来做到这一点。
例如,我有一个代码数组,其注释具有以下结构。
public SecAltIDGrp[] populateComments(int NoComments)
{
SecAltIDGrp[] x = new SecAltIDGrp[NoComments];
for(int i; i < NoComments; i++)
{
x[i].setAltID(obj.getVal);
x[i].setAltIDSource(arg0, arg1);
}
}
然而,数组中的每个元素都由与平面对象不同的getter填充......
对于在数组中插入if语句并将对象作为参数传入来执行此操作时,我无能为力。这是相当可怕的编码。
我应该为许多这样的团体这样做。有些数组元素设置器本身需要数组。
答案 0 :(得分:0)
不要使用Array,而是尝试使用HashMaps,这将帮助您更轻松地传递/存储对象。 如果你对hashmap键不是很感兴趣,那么你可以简单地使用ArrayList。
HashMap将存储require组以及密钥。这里的关键字类似于您计划使用的数组索引。
public HashMap< Integer , SecAltIDGrp > populateComments( int NoComments )
{
HashMap< Integer , SecAltIDGrp > hmSec = new HashMap< Integer , SecAltIDGrp >();
for(int i; i < NoComments; i++)
{
SecAltIDGrp x = new SecAltIDGrp();
x.setAltID(obj.getVal);
x.setAltIDSource(arg0, arg1);
hmSec.put( i , x );
}
return hmSec;
}
public class SecAltIDGrp{
String altId = "";
String altIdSource = "";
public void setAltIDSource( String altIDSource )
{
this.altIdSource = altIDSource;
}
public void setAltID( String altId )
{
this.altId = altID;
}
}
确保getter和setter也具有相应的参数以满足泛型,以防止在编译期间出现任何警告。
public class ObjectToMapTo
{
private HashMap< Integer , SecAltIDGrp > hmPrivGrp = new HashMap< Integer,SecAltIDGrp >();
public void setSecAltIDGrp( HashMap< Integer , SecAltIDGrp > hmSecAltIDGrp)
{
this.hmPrivGrp = hmSecAltIDGrp;
}
}
这是您设置特定组的方式。存储hashmap而不是数组。 ObjectToMapTo.setSecAltIDGrp(hmSec);
您将能够遍历散列图并能够检索单个SecAltIDGrp
要阅读的一些内容:
http://www.javadeveloper.co.in/java-example/java-hashmap-example.html