我在arraylist和hashmap上有问题
根据我的要求,我将数据存储到HashMap中,之后我创建了List作为List>。
HashMap<String,String> hashmap;
static List<HashMap<String,String>> hashmap_string;
从数据库中检索值并将其放在HashMap和ArrayList上,如:
contract_number=c.getString(c1);
Log.i("c1.getString,contract_number", contract_number);
String service_level=c.getString(c2);
hashmap=new HashMap<String, String>();
hashmap.put(contract_number, service_level);
hashmap_string.add(hashmap);
现在我想将值检索为String,String
当我将代码应用为:
for(int i=0;i<hashmap_string.size();i++)
{
Log.i("arraylist", ""+hashmap_string.get(i));
}
我在formet中获得单个字符串值
{Contract,ServiveValue}
但是我想把它分成2个字符串值...这些值也是多余的,如果使用hashMap,那么它不会显示冗余值。
请帮帮我..
答案 0 :(得分:1)
看来你错过了一些东西。执行hashmap_string.get(i)
时,您将获得<HashMap<String,String>
。所以,这是来自代码的正确价值。
你能做的是:
HashMap<String, String> hashMap2 = hashmap_string.get(i);
String value = hashMap2.get("your_key");
其他方式,您已经有两个拆分的字符串值。您可以在keySet()
对象上使用values()
和hashMap2
方法来实现这一目标。
答案 1 :(得分:0)
HashMap(和一般地图)用于键和值的多个一对一映射。你确定需要吗?查看您的代码,您似乎将该地图用作“配对”类。我会跳过列表,将所有内容放在同一个地图中,然后迭代地图中的对:
// using tree map to have entries sorted on the key,
// rather than the key's hash value.
Map<String, String> data = new TreeMap<String, String>();
data.put("c1", "s1");
data.put("c2", "s2");
for (Map.Entry<String, String> entry : data.entrySet()) {
String contract = entry.getKey();
String level = entry.getValue();
Log.i("data", contract + " : " + level");
}
将输出(假设TreeSet):
c1 : s1
c2 : s2
或者,创建例如一个ContractServiceLevel类,它包含两个字符串(合同号和服务级别),并将该类的实例放在列表中。
编辑:
public final class ContractServiceLevel {
public final String number;
public final String serviceLevel;
public ContractServiceLevel(String c, String s) {
number = c;
serviceLevel = s;
}
}
List<ContractServiceLevel> contracts = new ArrayList<ContractServiceLevel>();
contracts.add(new ContractServiceLevel("c1", "s1.1"));
contracts.add(new ContractServiceLevel("c1", "s1.2"));
contracts.add(new ContractServiceLevel("c2", "s2.1"));
for (ContractServiceLevel contract : contracts) {
Log.i("data", contract.number + ":" + contract.servicveLevel);
}
会输出:
c1 : s1.1
c1 : s1.2
c2 : s2.1
答案 2 :(得分:-2)
String value = hashmap.get(“contract”); 你将获得ServiveValue的价值