-3

メソッドがあり、その戻り値の型はリストですが、そのメソッド内の特定の条件に基づいて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;
    }

基本的に私はマップの実装を探していたので、誰かがマップがどのように有益であるかを教えてください。マップの実装についてアドバイスしてください。

4

1 に答える 1

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

これが良い設計であるかどうかを伝えるには、ユースケースについて十分に知りませんが、達成する必要があると言ったことを達成します-メソッドからいくつかのリストを返し、他の場所でそれらと対話する. 基本的には、いくつかのリストを値として持つマップを返すという考えと同じですが、追加されたマップ機能が必要ない場合は、これがより簡単です。

編集: リストの要素にアクセスするのと同じ方法で返されたリストにアクセスします: returned.get(index);、リストのリストに「返された」という名前を付けたと仮定します(明らかにすべきではありません...)。これは、ユースケースによって、どのリストがどのインデックスにあるのか (リストに入れられた順序に基づいて) を簡単に追跡できることを前提としています。そうでない場合は、意味のある名前をキーとして、リストを値として持つマップを使用する必要があります。

于 2013-05-23T06:10:16.587 に答える