在方法中选择列表上的地图

时间:2013-05-23 05:53:35

标签: java

我有一个方法,它的返回类型是列表但是内部的方法根据某些条件制作3个不同的列表并提供列表,但最后因为该列表的返回类型我不能返回这3个不同的列表,因为在有一点我需要访问这3个不同的列表,我认为这些不是正确的方法,而是我会考虑去创建一个密钥并将3个不同的列表与它们关联的地图,请指教

   public List<ghjObject> getabcObjectslistcount(String abcIdentifier)
    {

        List<ghjObject> abcfulioaObjects = new ArrayList <ghjObject>();
        List<ghjObject> deffulioaObjects = new ArrayList <ghjObject>();
        List<ghjObject> exsettlement = new ArrayList <ghjObject>();
        List<ghjObject> successfulabcsettlement = new ArrayList <ghjObject>();


        List<ghjObject> abcFeedObjects = futuresFeedHome.getabcFeedObjects(abcIdentifier);


        int failureabcfeed = 0;
        int failuredefsettlement =0;
        int sucessabcsettlement =0; 

        if (abcFeedObjects !=null  && abcFeedObjects.size()>0)
        {
             for (ghjObject f : abcFeedObjects) 
                {

                 if ("INVALID".equalsIgnoreCase(f.getStatus()) )
                 {
                     deffulioaObjects.add(f) ;
                     failurecounterioafeed++;

                 }

                 abcfulioaObjects.add(f);       

                }

             for (ghjObject f : abcfulioaObjects) 
             {
             Settlement settlement = settlementHome.findByID(f.getSettlementId());


             if ("ytrQueue".equalsIgnoreCase(settlement.getCurrentWFQueue()) || "yds".equalsIgnoreCase(settlement.getCurrentWFQueue()) )
             exsettlement.add(f);
             failuredefsettlement++;            



             if ("wgm".equalsIgnoreCase(settlement.getCurrentWFQueue()) || "yjm".equalsIgnoreCase(settlement.getCurrentWFQueue() ))
                 {
                 successfulabcsettlement.add(f);
                 sucessabcsettlement++;
                 }
    }
    }
        return abcFeedObjects;
    }
人们请告诉我基本上我正在寻找地图实施,如果有人可以提出建议如何地图是有利的,这将是一个伟大的 请告知地图实施

1 个答案:

答案 0 :(得分:2)

这真的应该是一个评论,但是因为你要求它:

 public List<List<ghjObject>> getabcObjectslistcount(String abcIdentifier)
{
    List<List<ghjObject>> toReturn = new ArrayList<ArrayList<ghjObject>>();
    List<ghjObject> abcfulioaObjects = new ArrayList <ghjObject>();
    List<ghjObject> deffulioaObjects = new ArrayList <ghjObject>();
    List<ghjObject> exsettlement = new ArrayList <ghjObject>();
    List<ghjObject> successfulabcsettlement = new ArrayList <ghjObject>();
    List<ghjObject> abcFeedObjects = futuresFeedHome.getabcFeedObjects(abcIdentifier);
    toReturn.add(abcfulioaObjects);
    toReturn.add(deffulioaObjects);
    toReturn.add(exsettlement);
    toReturn.add(successfulabcsettlement);
    toReturn.add(abcFeedObjects);
    ...
    //execute the rest of your code, add whatever you need to to those lists, then

    return toReturn;
}

我不太了解你的用例,告诉你这是否是一个好的设计,但它完成了你所说的你需要完成的事情 - 这是从一个方法返回几个列表,以便与其他地方进行交互。它与你的想法基本相同 - 返回一个包含多个列表作为值的地图 - 但是,如果你不需要添加Map功能,这就更简单了。

编辑:您访问返回的列表的方式与访问任何列表的元素的方式相同:returned.get(index);,假设您已将“已返回”的列表命名(您不应该,显然...... )。这假定您的用例使您能够轻松跟踪哪个列表将在哪个索引(基于它们放入列表的顺序)。如果没有,您应该使用具有有意义名称的地图作为键,并将列表作为值。