HashMap和在检索
ArrayList的混乱我有ArrayList和HashMap的HashMap和在检索
一个问题,因为根据我的要求,我将数据存储到HashMap和之后,我已经创建了一个列表,列表>。
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);
现在我要检索的值作为字符串,字符串
,当我应用代码为:
for(int i=0;i<hashmap_string.size();i++)
{
Log.i("arraylist", ""+hashmap_string.get(i));
}
我在formet中获取单个字符串值为
{Contract,ServiveValue}
,但我想这个分成2个字符串值......此外,这些值是多余的,如果是使用HashMap的话,就不会显示我的冗余值。
用于多个键和值中的一个一对一映射,请帮我在这..
的HashMap(及地图一般)。你确定你需要吗?看看你的代码,看起来你使用地图作为“Pair”类。我会跳过列表,并把一切都放在同一张地图,然后遍历对在地图:
// 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
看来你失去了一些东西。当您执行hashmap_string.get(i)
时,您将获得<HashMap<String,String>
。所以,这是代码的正确价值。
你可以做的是:
HashMap<String, String> hashMap2 = hashmap_string.get(i);
String value = hashMap2.get("your_key");
其他方式,你已经有了,两个分离的字符串值。您可以通过使用keySet()
和values()
方法获得该方法,而不是使用hashMap2
对象。
它仍然不检索重复的数据 – Kanika 2012-02-23 09:23:37
String value = hashmap.get(“contract”); 你会得到的值为ServiveValue
为什么你不只使用HashMap来代替。如果您需要将'Contract'和'ServiveValue'作为单个值,我认为这是更好的选择。 – 2012-02-23 08:59:21
看来你正在设计你的数据非常糟糕。你试图用这种方式解决什么问题? – 2012-02-23 09:13:00
因为HashMap不检索重复的值,我的合同和服务水平值有重复的值 – Kanika 2012-02-23 09:14:02