我想Id和名稱存儲到一個Java集合是這樣的:存儲值的Java集合
121 Name_1
332 Name_9
334 Name_e
..........
我可以用一個HashMap
但我需要能夠將收藏與更像值延長這個:
121 Name_1 1
332 Name_9 1
334 Name_e 3
............
是否有Java集合可以存儲這些值而不使用Object?
我想Id和名稱存儲到一個Java集合是這樣的:存儲值的Java集合
121 Name_1
332 Name_9
334 Name_e
..........
我可以用一個HashMap
但我需要能夠將收藏與更像值延長這個:
121 Name_1 1
332 Name_9 1
334 Name_e 3
............
是否有Java集合可以存儲這些值而不使用Object?
您可以考慮使用諸如JSON Simple之類的庫,它可以爲記錄的字段數量提供靈活性。這裏是一個取自this的示例頁面:
import org.json.simple.JSONObject;
JSONObject obj=new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
obj.put("nickname",null);
System.out.print(obj);
有沒有第三方庫的解決方案? – user1285928 2014-08-30 08:33:10
@ user1285928你是否嘗試過'HashMap',同時使用ID作爲'Key'和名稱爲'Value'? – Juxhin 2014-08-30 08:35:39
您的示例未能在普通的'HashMap
您應該定義一個類中的數據:
public class Whatever {
private final String name;
private final int someValue;
public Whatever(String name, int someValue) {
this.name = name;
this.someValue = someValue;
}
public String getName() { return name; }
public in getSomeValue() { return someValue; }
}
然後使用它是這樣的:
Map<Integer, Whatever> theData = new HashMap<>();
theData.put(121, new Whatever("Name_1", 1));
(當然,給類及其字段有意義的名字!)
@ gla3dr的評論是什麼意思是HashMap<String,List> sample = new HashMap<String,List>();
然後你把數據放到你的列表中。
List myData = new ArrayList();
myData.add("121");
myData.add("Name_1");
myData.add("1");
然後將其放在HashMap中
sample.put("key",myData);
這樣你仍然可以訪問列表
List myList = sample.get("key");
這裏是你如何可以存儲這些可能的解決方案:
Map<Integer, List<String>> map = new HashMap<Integer, ArrayList<String>>();
然後你可以cre吃了列表的第一個值:
List<String> list = new ArrayList<>();
list.add("Name_1");
然後用鑰匙一起添加到地圖:
map.put(121, list);
然後,當你想擴展的一個值,你可以添加到列出像這樣:
map.get(121).add("1");
當然,這意味着這兩個名字,第二個數字都被存儲String
秒。如果您想存儲不同的類型,則必須將它們存儲爲Object
s。
既然你DONOT要使用的對象,只有集合,你可以試試下面的代碼: -
// Individual column names which can be extended
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
static final String KEY_NUM = "title";
// Contains all the rows
ArrayList<HashMap<String, Object>> mapList = new ArrayList<HashMap<String, Object>>();
// Contains column data in individual rows
HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put(KEY_ID, 121);
map1.put(KEY_NAME, "Name_1");
map1.put(KEY_NUM, 1);
HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put(KEY_ID, 334);
map2.put(KEY_NAME, "Name_e");
map2.put(KEY_NUM, 3);
mapList.add(map1);
mapList.add(map2);
請注意,您可以通過行循環,並只創建一個映射參考變量,而不是MAP1和MAP2和依此類推,併爲每一行分配一個新的Hashmap對象,以使代碼看起來更清晰。
你希望能夠擴展你的集合的所有元素,或者只是其中的一部分? – Savail 2014-08-30 08:27:58
如果你需要爲每個鍵添加額外的值,也許你可以使用列表的地圖? – gla3dr 2014-08-30 08:28:52
@ gla3dr你能告訴我一些例子嗎? – user1285928 2014-08-30 08:30:24