【问题标题】:How to push value in List of Object?如何在对象列表中推送值?
【发布时间】:2021-05-23 02:11:00
【问题描述】:

Java项目在进行的时候出现了问题,所以问了一个问题。

例如,假设我们在 JavaScript 中有这个 Object。

let testObject = {
   'Fruit' : [],
   'Food': []
}

我可以为食物数组添加一个值。

testObject['Fruit'].push('tomato');
testObject['Food'].unshift('ramen');

和 javascript 一样,java 直接将值推送到对象列表中。

        HashMap<String, ArrayList<String>> testObject = new HashMap<>();
        testObject.put("Food",new ArrayList<>());
        testObject.put("Fruit",new ArrayList<>());
        for(T etc : testObject...){
            if(etc...equals("Fruit")){
                etc..add('tomato');
            }else if(etc..equals("Food")){
                etc..add('ramen');
            }
        }

除了通过引用调用提前声明ArrayList并放入testObject之外,还有什么办法吗?

【问题讨论】:

  • 即使在 JavaScript 中,您也要事先创建数组(使用 []),所以这没有什么不同。但是,如果您不想要那些 .put() 电话,您可以使用 testObject.computeIfAbsent

标签: java arraylist hashmap


【解决方案1】:

从 java 8+ 开始,您可以尝试以下方法:

Map<String, Collection<String>> food = new HashMap<>();

// ... any code ...

food.computeIfAbsent("fruits", k -> new ArrayList<String>()).add("apple");

【讨论】:

    【解决方案2】:

    假设键存在于地图中

    testObject.get("Fruit").add("tomato")

    假设地图中可能不存在密钥

        public static void main(String[] args) {
            Map<String, List<String>> testObject = new HashMap<>();
            testObject.put("A", new ArrayList<>());
            testObject.get("A").add("tomato");
            testObject.computeIfAbsent("B", k -> new ArrayList<>()).add("tomato");
            System.out.println(testObject);
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2019-06-25
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多