我想在Java中用Hashmap创建一个String数组?
我的 HashMap 就像这样
HashMap<String, String> param = new HashMap<String, String>();
param.put("A", "2");
param.put("B", "3");
param.put("C", "2");
我想像这样创建一个数组的字符串。
String[] list = {"A 1", "A 2","B 1","B 2","B 3","C 1","C 2"};
编辑:
输入和输出之间的关系。如果键A的值是2输出 如果键B的值为3,则应该包含A 1和A 2 包含B 1 B 2 B3等。
我所做的是
public class test {
public static void main(String[] args) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("A", "2");
param.put("B", "3");
param.put("C", "2");
String[] list = new String[param.size()];
int i = 0;
int a= Integer.parseInt(param.get("A"));
for (int j = 1;j<= a;j++) {
list[i] = ("a" +j);
System.out.println(list[i]);
i++;
}
}
我是Java新手。请帮助我怎么做。谢谢
答案 0 :(得分:2)
试试这个
HashMap<String, String> param = new HashMap<String, String>();
param.put("A", "2");
param.put("B", "3");
param.put("C", "2");
String[] list = new String[7];// It is better to use List other than an array
int i = 0;
for (Map.Entry<String, String> entry : param.entrySet()) {
int lim=Integer.parseInt(entry.getValue());
for(int j=0;j<lim;j++){
list[i]=entry.getKey()+" "+String.valueOf(j+1);
i++;
}
}
如果你真的想在这里使用数组。您可以尝试以下方式
HashMap<String, String> param = new HashMap<String, String>();
param.put("A", "2");
param.put("B", "3");
param.put("C", "2");
int sum=0;
for (Map.Entry<String, String> entry : param.entrySet()) {
sum+=Integer.parseInt(entry.getValue());
}
String[] list = new String[sum];
int i = 0;
for (Map.Entry<String, String> entry : param.entrySet()) {
int lim=Integer.parseInt(entry.getValue());
for(int j=0;j<lim;j++){
list[i]=entry.getKey()+" "+String.valueOf(j+1);
i++;
}
}
答案 1 :(得分:0)
好的,比如:
String[] list = new String[param.size()];
int i = 0;
for (Map.Entry<String, String> entry : param.entrySet()) {
list[i] = entry.getKey() + " " + entry.getValue();
++i;
}
assert i == list.length;
Arrays.sort(list);
但我认为您需要Map<String, Set<Integer>>
。
为什么不:
SortedSet<String> param;
void putParam(String key, String addableValue) {
param.add(key + " " + addableValue);
}
putParam("A". "1");
putParam("B", "1");
putParam("A". "2");
putParam("B", "1");
String[] list = param.toArray(new String[param.size()]);
// [ "A 1", "A 2", "B 1" ]
对于泛型类型,toArray需要String的数组对象。为该数组提供正确的大小,将该数组重用为返回值list
。
答案 2 :(得分:0)
基本算法应该是:
对于地图中的每个键(使用param.entrySet())
迭代value
次并推送 进入数组/列表。