繁体   English   中英

如何在Java中将LinkedHashMap的数组列表存储为LinkedHashMap的值

[英]How to store arraylist of LinkedHashMap as value of LinkedHashMap in java

分割以下用“ /”分隔的字符串后,在每个字符串中,第一个4个字符是映射的键,而其余部分是值,例如在“ GOMN1Q”中,GOMN是键,而1Q是值,同样在“ SNIF4A25E8”中,SNIF是键和4A25E8为值。

/GOMN1Q/SNIF4A25E8/BOOKTQNN013A/RATE109.00/ROOMMSG1/RD1MSG11/RD2MSG12/CMUY/SMKN/BOOKTQNNN5GM/RATE114.00/ROOMMSG2/RD1MSG21/RD2MSG22/CMUY/CMUY/SMKN/BOOKTQNNB1KQ/RATE119.00/ROOMMSG3/RD1MSG31/RD2MSG32/CMUY/CMUY/SMKN

格式如下,每个

[GOMN:1Q
SNIF:4A25E8
k3: [BOOK:TQNN013A RATE:109.00 k4:[MSG1, MSG11, MSG12] CMUY:11 SMOK:N]
    [BOOK:TQNNN5GM RATE:114.00 k4:[MSG2, MSG21, MSG22] CMUY:22 SMOK:N]
    [BOOK:TQNNB1KQ RATE:119.00 k4:[MSG3, MSG31, MSG32] CMUY:33 SMOK:N]]

我正在使用地图作为LinkedHashMap,因为LinkedHashMap允许Null值并保持插入顺序。 分割斜杠分隔的字符串后,请告知如何存储。 谢谢。

实际上,将数据存储为带有列表的地图并不是最好的选择-在大多数情况下,最好创建自己的代表实际业务模型的域类。

但是,如果您真的想以这种方式存储数据,则可以这样做。

这是一个简单的示例,说明如何使用映射和列表重新创建问题中给出的示例,而无需创建代表业务模型对象的类:

public static void main(String[] args) throws IOException {
    Map<String, Object> map = new LinkedHashMap<>();
    map.put("GOMN", 10);
    map.put("SNIF", "4A25E8");
    List<Map<String, Object>> k3List = new ArrayList<>();
    createK3Map(k3List, "TQNN013A", 109.00, Arrays.asList("MSG1", "MSG11", "MSG12"), 11, "N");
    createK3Map(k3List, "TQNNN5GM", 114.00, Arrays.asList("MSG2", "MSG21", "MSG22"), 22, "N");
    map.put("k3", k3List);
    System.out.println(map);
}

private static void createK3Map(List<Map<String, Object>> k3List, String book, double rate, List<String> messages, int cmuy, String smok) {
    Map<String, Object> k3_1 = new LinkedHashMap<>();
    k3_1.put("BOOK", book);
    k3_1.put("RATE", rate);
    k3_1.put("k4", messages);
    k3_1.put("CMUY", cmuy);
    k3_1.put("SMOK", smok);
    k3List.add(k3_1);
}

打印输出:

{GOMN=10, SNIF=4A25E8, k3=[{BOOK=TQNN013A, RATE=109.0, k4=[MSG1, MSG11, MSG12], CMUY=11, SMOK=N}, {BOOK=TQNNN5GM, RATE=114.0, k4=[MSG2, MSG21, MSG22], CMUY=22, SMOK=N}]}

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM