使用java流使对象数组大写

使用java流使对象数组大写,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个hashmap数组示例 [ { name:"Sudeep" }, { name:"Sudeep" } ] 我想使用java流为java中的每个对象指定大写名称。在使用它时,它会将响应作为 [ "SUDEEP", "SUDEEP" ] (List) string.parallelStream().map(s -> ((HashMap<String,String>)s).get(key).toUpper

我有一个hashmap数组示例

[
    {
      name:"Sudeep"
    },
    {
      name:"Sudeep"
    }
]
我想使用java流为java中的每个对象指定大写名称。在使用它时,它会将响应作为

[
   "SUDEEP",
   "SUDEEP"
]

(List) string.parallelStream().map(s -> ((HashMap<String,String>)s).get(key).toUpperCase()).collect(Collectors.toList());
[
“苏迪普”,
“苏迪普”
]
(List)string.parallelStream().map(s->((HashMap)s.get(key.toUpperCase()).collect(Collectors.toList());

请帮忙

我有一个HashMap数组,这意味着您有:

Map<String, String>[] map = new HashMap[2];
map[0] = new HashMap<String, String>() {{
    put("name", "Sudeep");
}};
map[1] = new HashMap<String, String>() {{
    put("name", "Sudeep");
}};

如果要编辑相同的贴图数组,可以使用:

String key = "name";
List<String> result = Arrays.stream(map)
        .map(m -> m.get(key).toUpperCase())
        .collect(Collectors.toList());
String key = "name";
map = Arrays.stream(map)
        .map(s -> {
            s.computeIfPresent(key, (k, v) -> s.get(key).toUpperCase());
            return s;
        }).toArray(s -> new HashMap[s]);
Arrays.stream(map).forEach(System.out::println);
输出

{name=SUDEEP}
{name=SUDEEP}

如果您在解析json和获取信息方面遇到困难,这里有一种快速解决问题的方法(我正在使用):

import org.json.JSONArray;
导入java.util.*;
公共级Mcve{
公共静态void main(字符串[]args){
String String=“[{name:\'Sudeep\'},{name:\'Sudeep\'}]”;
JSONArray解析=新的JSONArray(字符串);
Map[]Map=newhashmap[parsing.length()];
for(int i=0;i
要完全理解您想要实现的目标是相当困难的,我假设任何关键点都是有效的,您不关心关键点,因为我在问题中看不到对它的引用。 假设内部贴图有多个关键点,并且希望将值转换为大写并忽略关键点->这是您的解决方案:

map.parallelStream().map(m -> m.values()).flatMap(l -> l.stream()).map(String::toUpperCase).collect(Collectors.toList());
地图的形式在哪里

[
    {
      name:"Sudeep"
    },
    {
      name:"Sudeep"
    }
]

也许这就是你要找的


List>result=Arrays.stream(map).map(m->m.entrySet().stream())
.collect(Collectors.toMap(k->k.getKey(),v->v.getValue().toUpperCase()))
.collect(Collectors.toList());

看起来你的问题中有答案。你的问题是什么?你想保留结构
映射[]
还是将其映射到
列表
?你给出的代码不准确(至少在命名方面)
string.parallelStream()
没有意义,也不会compile@AndrewTobilko我同意,据我所知,OP有一个Map数组
Map[]
,希望获得特定Map的值和大写字母,并将结果收集为列表,但希望OP能进一步澄清他的问题我相信OP说“我有一个数组”的意思是“我有一个JSON数组”,因为显示的数据是JSON,而不是Java。它的字面意思不是“我有一个Java数组”。@Andreas我添加了第三个答案,解析JSON而不是Java中的HashMap数组
map.parallelStream().map(m -> m.values()).flatMap(l -> l.stream()).map(String::toUpperCase).collect(Collectors.toList());
[
    {
      name:"Sudeep"
    },
    {
      name:"Sudeep"
    }
]