Java设计问题中的嵌套重复GRP
编辑:我有两个对象,必须将一个映射到另一个。问题是属性不完全匹配。我映射的对象是平面的,它有一组getter和setter。一切都很好,很容易相处。 我必须将其映射到一个具有不同结构的对象,在组(如Java设计问题中的嵌套重复GRP,java,arrays,generics,nested,Java,Arrays,Generics,Nested,编辑:我有两个对象,必须将一个映射到另一个。问题是属性不完全匹配。我映射的对象是平面的,它有一组getter和setter。一切都很好,很容易相处。 我必须将其映射到一个具有不同结构的对象,在组(如SecAltIDGrp[]和属性(如以下)中。这是使用 ObjectToMapTo.setSecAltIDGrp(SecAltIDGrp[]) 我有几个重复的组,我必须用平面对象的getter的值来映射这些组。问题是这样的。要映射到的对象具有GRP数组[]s,该数组必须由平面对象中不同的gette
SecAltIDGrp[]
和属性(如以下)中。这是使用
ObjectToMapTo.setSecAltIDGrp(SecAltIDGrp[])
我有几个重复的组,我必须用平面对象的getter的值来映射这些组。问题是这样的。要映射到的对象具有GRP数组[]s,该数组必须由平面对象中不同的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);
}
}
public SecAltIDGrp[]populateComments(int-NoComments)
{
SecAltIDGrp[]x=新SecAltIDGrp[NoComments];
for(int i;i
但是,数组的每个元素都由平面对象的不同getter填充
在数组中插入if语句并将对象作为参数传入,这样做并不是件好事。这是相当可怕的编码
我应该为许多这样的团体做这件事。有些数组元素设置器本身需要数组。请尝试使用哈希映射,这将帮助您更轻松地传递/存储对象,而不是使用数组。 如果您对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;
}
}
public HashMappopulateComments(int-NoComments)
{
HashMaphmSec=新HashMap();
for(int i;i
确保getter和setter还具有适当的参数,以满足泛型要求,从而防止编译期间出现任何警告
public class ObjectToMapTo
{
private HashMap< Integer , SecAltIDGrp > hmPrivGrp = new HashMap< Integer,SecAltIDGrp >();
public void setSecAltIDGrp( HashMap< Integer , SecAltIDGrp > hmSecAltIDGrp)
{
this.hmPrivGrp = hmSecAltIDGrp;
}
}
公共类objecttomapot
{
私有HashMaphmPrivGrp=newhashmap();
public void setSecAltIDGrp(HashMaphmSecAltIDGrp)
{
this.hmPrivGrp=hmSecAltIDGrp;
}
}
这就是设置特定组的方式。存储hashmap而不是数组。
Objecttomapot.SetSetCaltidGRP(hmSec)
您将能够遍历hashmap,并能够检索单个SecAltIDGrp
需要阅读的内容:你的问题很令人困惑。我不明白您想做什么,所以很难帮助:(完成编辑。如果仍然不清楚,请告诉我,我将按照您的意愿详细介绍。您可以解释/显示此内容吗?“但是数组的每个元素都由平面对象的不同getter填充…”例如
x[1]。setAltID(obj.getVal)
x[2].setAltID(obj.getVal1)
x[3].setAltID(obj.getVal2)
getVal对于每个元素都是不同的方法。我无法访问任何一个对象代码。我只能嵌入它们,我必须为它们使用包装器。或者将Arraylist映射到数组。我非常确定Arraylist有一个方法。toArray()我希望:)