【问题标题】:Nested RepeatingGrps within Java Design IssueJava设计问题中的嵌套RepeatingGrps
【发布时间】:2011-05-25 17:11:24
【问题描述】:

编辑:我有两个对象,我必须将一个映射到另一个。问题是属性不完全匹配。我要映射的对象是平面的,有一堆 getter 和 setter。一切都非常好,易于使用。 我必须将它映射到一个具有某种不同结构的对象,在诸如SecAltIDGrp[] 之类的组和诸如下面的那些属性中。使用

ObjectToMapTo.setSecAltIDGrp(SecAltIDGrp[]) 

我有一些重复的组,我必须使用来自平面对象的 getter 的值进行映射,问题是这样的。要映射到的对象具有 Grps 的 Array[]s,必须由来自平面对象的各种不同的 getter 填充。我想不出一个干净的方法来做到这一点。

例如,我有一个代码是一个 cmets 数组,它具有以下结构。

    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 语句并将对象作为参数传递,这对我来说不是一件好事。这是相当可怕的编码。

我应该为许多这样的团体做这件事。有些数组元素设置器本身需要数组。

【问题讨论】:

  • 你的问题很混乱。我不明白你想做什么,所以很难提供帮助:(
  • 已完成编辑。如果还不清楚,请告诉我,我会尽可能详细地介绍您想要的内容
  • 你能解释/展示一下吗? “但是数组的每个元素都由来自平面对象的不同 getter 填充......”
  • 比如x[1].setAltID(obj.getVal)x[2].setAltID(obj.getVal1)x[3].setAltID(obj.getVal2)getVal对每个元素都是不同的方法。

标签: java arrays generics nested


【解决方案1】:

尝试使用 HashMaps,而不是使用 Array,这将帮助您更轻松地传递/存储对象。 如果您对 hashmap 键不感兴趣,那么您可以简单地使用 ArrayList。

HashMap 将存储所需组以及密钥。这里的键将类似于您计划使用的数组 Index。

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;
   }
}

这是您设置特定组的方式。存储哈希图而不是数组。 ObjectToMapTo.setSecAltIDGrp(hmSec);

您将能够遍历哈希图并能够检索单个 SecAltIDGrp

一些需要阅读的东西:
http://www.javadeveloper.co.in/java-example/java-hashmap-example.html

【讨论】:

  • 我无权访问任何对象代码。我只能嵌入它们,我将不得不为它们使用包装器。否则将 Arraylist 映射到数组。我很确定 ArrayList 有一个方法 .toArray() 我希望 :)
猜你喜欢
  • 2011-02-26
  • 2021-10-04
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多