我有两个相同大小的String
数组。
我需要创建一个名称和值Map
。如何将它们添加到Map
?
String[] labelNames = request.getParameterValues("labelName");
String[] labelValues = request.getParameterValues("labelValues");
Map<String,String> labels = new HashMap<>();
答案 0 :(得分:2)
您的arrays
大小相同,因此您可以使用相同的for-loop
对其进行迭代,您可以同时访问index
put
和map
for(int i=0; i<labelNames.length; i++){
labels.put(labelNames[i], labelValues [i]);
}
:
msg.payload = Buffer.from(msg.payload);
return msg;
答案 1 :(得分:2)
如果您有两个大小相同的数组,只需使用labelValue
和for(int i = 0; i < labelNames.length; i++) {
labels.put(labelNames[i], labelValues[i]);
}
if(labelNames.length == labelValues.length) {...}
如果您不确定两个数组的大小是否相同,请在循环之前添加此检查:
pg
答案 2 :(得分:1)
java7
的解决方案 - 您可以使用带有单个索引的for
循环结构同时进入2个数组。
至于假设labelNames.length == labelValues.length
,通常最好经常检查它以确保您没有引入错误并获得意外结果:
if(labelNames.length == labelValues.length) {
int i;
for(i = 0; i < labelNames.length; i++) {
labels.put(labelNames[i], labelValues[i]);
}
}
在java8
中,您可以使用Streams
替代:
Map<String, String> map =
IntStream.range(0, names.length)
.boxed()
.collect(Collectors.toMap(i -> labelNames[i], i -> labelValues[i]));
答案 3 :(得分:1)
使用此代码:
Map<String,String> labels = new HashMap<>();
for(int i=0;i<labelNames.length;i++)
labels.put(labelNames[i] , labelValues[i]);
答案 4 :(得分:1)
首先:
Map<String,String> labels = new HashMap<String, String>();
然后:
for (int i=0; i < labelNames.length; i++)
{
labels.put(labelNames[i], labelValues[i]);
}