从HashMap中删除多个对象

时间:2015-10-26 00:55:07

标签: java hashmap

我创建了一个HashMap事实,它包含键(className)和值(pojo)。

我希望在将hashMap发送到方法时从该hashMap中删除多个类对象,下面的代码只删除一个Class对象(响应),如果我想删除多个,则该怎么办,(说回应& HULC)。另外,我不想从 fact hashMap 中删除对象,因此创建了另一个副本。

我很感激您提前感谢:)

public class TempAvengersTest {

    public static void main(String[] args) {

        TempAvengersTest test = new TempAvengersTest();

        //setting avengersVo
        AvengersVo avengersVo = new AvengersVo();
        avengersVo.setNumberOfSuperHeros("6");
        avengersVo.setReleaseDate("May6,2016");

        HulcVO hulcVo = new HulcVo();
        hulcVo.setweight("2000");
        hulcVo.setAggression("Max");

        IronManVo imVo = new IronManVo();
        imVo.setAttitude("Max");
        imVo.setNewGear(true);

        HashMap<String, Integer> positiveFeedback = new HashMap<String, Integer>();
        positiveFeedback.put("IMDB", 8);
        positiveFeedback.put("rottenTomatoes", 78);

        AudienceResponseVo responseVo = new AudienceResponseVo();
        responseVo.setNegativeFeedbackInd(true);
        responseVo.setPositiveFeedback(positiveFeedback);

        HashMap<String, Object> facts = new HashMap<String, Object>();
        facts.put("Movie", avengersVo);
        facts.put("HULC", hulcVo);
        facts.put("IronMan", imVo);
        facts.put("response", responseVo);

        sendToPostScreeningHandler(test.sendToPreScreeningHandler(facts));


        System.out.println("\n\n********************************************  END  ********************************************");
    }

    private HashMap<String, Object> sendToPreScreeningHandler (HashMap<String, Object> facts){

        //" facts needs to be unchanged, Hence creating tmpFacts " !!!
        HashMap<String, Object> tmpFacts = new HashMap<String, Object>();
        tmpFacts.putAll(facts);

        //Deleting response object map from tmpFacts.
           for (Object key : facts.keySet()) {
                if("response".equals(key)){
                    tmpFacts.remove(key);
                }
           }

        System.out.println("PreScreeningEngineVo: "+AvengersJSonConverter.convertToJSON(tmpFacts));
        System.out.println("****************************************************************************************************");
        System.out.println("PostScreeningEngineVo: "+AvengersJSonConverter.convertToJSON(facts));

        return facts;
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用要删除的元素列表和contains方法。

所以这个:

   if("response".equals(key))

会改为:

if(removables.contains(key))

但是,您必须在某处声明removables,如下所示:

private List<String> removables = new ArrayList("response", "HULC");
相关问题