简体   繁体   English

如何使用 Java 映射<String, Arraylist<Integer> &gt;

[英]How to work with Java map with<String, Arraylist<Integer>>

I have a map in java which has String as Key and an integer list as value.我在java中有一个映射,它以字符串为键,以整数列表为值。 My query returns the below set "Day:1, Day:2, Day:3, Month:1, Year:15, Year:20, Year:25"我的查询返回以下集合“Day:1, Day:2, Day:3, Month:1, Year:15, Year:20, Year:25”

Meaning, I have keys and different values for each keys in random.. I am expecting an output of a map which has unique key and corresponding list of int in values as seen below:意思是,我随机有每个键的键和不同的值。我期待一个映射的输出,它具有唯一的键和对应的 int 值列表,如下所示:

{ 
"day": [1,2,3],
"Month": [1],
"year": [15,20,25]
}

Kindly help请帮忙

public static void main(String[] args){
    String input = "Day:1, Day:2, Day:3, Month:1, Year:15, Year:20, Year:25";
    List<String> list = Arrays.asList(input.split(","));
    
    JSONObject jsonObject = new JSONObject();
    
    for (String val : list) {
        String[] splitedValues = val.split(":");
        if(jsonObject.has(splitedValues[0].trim())) {
            jsonObject.getJSONArray(splitedValues[0].trim()).put(Integer.valueOf(splitedValues[1]));
        }else {
            List<Integer> integers = new ArrayList<Integer>(); 
            integers.add(Integer.valueOf(splitedValues[1]));
            jsonObject.put(splitedValues[0].trim(), integers);
        }
    }
    System.out.println(jsonObject);
}

output输出

{"Month":[1],"Year":[15,20,25],"Day":[1,2,3]}

Please find below code.请找到下面的代码。 I have created an inner class to map type and value and then collected it by grouping the type.我创建了一个内部类来映射类型和值,然后通过对类型进行分组来收集它。

import java.util.Map;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.toList;

public class StringToMap {
    public static void main(String[] args) {
        String queryOutput = "Day:1, Day:2, Day:3, Month:1, Year:15, Year:20, Year:25";
        System.out.println(groupByTypeAndAddValuesToList(queryOutput));
    }

    private static Map<String, List<Integer>> groupByTypeAndAddValuesToList(String queryOutput) {
        final String[] split = queryOutput.split(",");
        return Arrays.stream(split).map(s -> {
            final String trimmed = s.trim();
            final String[] splitByColon = trimmed.split(":");
            return new TypeValues(splitByColon[0], Integer.parseInt(splitByColon[1]));
        }).collect(groupingBy(TypeValues::getType, Collectors.mapping(TypeValues::getValue, toList())));
    }

    private static class TypeValues {
        private final String type;
        private final Integer value;

        public TypeValues(String type, Integer value) {
            this.type = type;
            this.value = value;
        }

        public String getType() {
            return type;
        }

        public Integer getValue() {
            return value;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JAVA:如何将String ArrayList转换为Integer Arraylist? - JAVA: How to convert String ArrayList to Integer Arraylist? 如何从java地图中获取价值:地图 <String,ArrayList<String> &gt;? - How to get value from the java map : Map<String,ArrayList<String>>? Java ArrayList <Integer> 到ArrayList <String> & 反之亦然 - Java ArrayList<Integer> to ArrayList<String> & vice versa 使用Java 8流,如何转换Map <String, Map<String, List<Person> &gt;&gt;到地图 <Integer, Map<String, Integer> &gt;? - Using Java 8 streams, how to transform Map<String, Map<String, List<Person>>> to Map<Integer, Map<String, Integer>>? 如何转换属性ArrayList <String> 或ArrayList <Integer> 或ArrayList <MYCLASS> 从JSON对象到Java对象? - How to convert an attribute ArrayList<String> or ArrayList<Integer> or ArrayList<MYCLASS> from a JSON object to a java object? 可以比较来自 Map 的值<integer, arraylist<string> &gt; 与 ArrayList<string></string></integer,> - Can compare values from Map<Integer, ArrayList<String>> with ArrayList<String> 使用字符串Integer映射ArrayList和另一个内部Map - Mapping an ArrayList and another internal Map with String, Integer JAXB马歇尔地图 <Integer, ArrayList<String> &gt; - JAXB Marshall Map<Integer, ArrayList<String>> 如何在java中对具有整数值的字符串的Arraylist进行排序 - how to sort Arraylist of string having integer values in java 如何计算ArrayList中的重复项 <Integer> 用Java并将它们作为字符串返回 - How to count duplicates in ArrayList<Integer> in Java and return them as string
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM