hashmap 和 arraylist 连接
hashmap and arraylist connected
我的主要目的是让我的 arraylist 和 hashmap 始终连接。
从某种意义上说,连接意味着如果我在地图中添加任何东西,那么它应该被复制到 ArrayList
中,反之亦然。
任何想法伙计们。
static Map<Integer,Employee> emp = new HashMap<Integer,Person>();
static ArrayList<Employee> ls = new ArrayList <Employee>(emp.values());
通过此代码,我在 HashMap
中添加的任何内容都会被复制到列表中,但是当我从 ArrayList
中删除时,它不会反映在地图中。
请帮助。
只需使用 emp.values()
集合。它由地图支持,反之亦然。参见 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#values()
Collection<Employee> ls = emp.values();
如果您从此 Collection
中删除某些内容,它也会从 HashMap
中删除。
在您的示例中,您正在创建一个新的 ArrayList
并将所有元素的引用复制到其中。当然这个新 ArrayList
不知道你 HashMap
.
一个简短的例子:
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
// Output is "{1=One, 2=Two, 3=Three}"
System.out.println(map);
Collection<String> backedUpCollection = map.values();
// Remove something from collection and check the maps content
backedUpCollection.remove("Two");
// Output is "{1=One, 3=Three}"; "Two" was removed
System.out.println(map);
// Add an entry to the map and check the content of collection
map.put(4, "Four");
// Output is "[One, Three, Four]"; "Four" was added
System.out.println(backedUpCollection);
你说:
Connected in the sense means if I add any thing in map then it should be copied in ArrayList and viceversa.
但是假设您向数组列表中添加一些内容,您希望散列映射的键是什么?
一旦您决定了每个用例的行为,我建议的解决方案是编写您自己的添加和删除函数,这些函数总是 add/remove 来自数组和散列的值。然后你可以使用那些方法,这些方法环绕着 Java 提供的方法,而不是直接使用它们。
我的主要目的是让我的 arraylist 和 hashmap 始终连接。
从某种意义上说,连接意味着如果我在地图中添加任何东西,那么它应该被复制到 ArrayList
中,反之亦然。
任何想法伙计们。
static Map<Integer,Employee> emp = new HashMap<Integer,Person>();
static ArrayList<Employee> ls = new ArrayList <Employee>(emp.values());
通过此代码,我在 HashMap
中添加的任何内容都会被复制到列表中,但是当我从 ArrayList
中删除时,它不会反映在地图中。
请帮助。
只需使用 emp.values()
集合。它由地图支持,反之亦然。参见 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#values()
Collection<Employee> ls = emp.values();
如果您从此 Collection
中删除某些内容,它也会从 HashMap
中删除。
在您的示例中,您正在创建一个新的 ArrayList
并将所有元素的引用复制到其中。当然这个新 ArrayList
不知道你 HashMap
.
一个简短的例子:
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
// Output is "{1=One, 2=Two, 3=Three}"
System.out.println(map);
Collection<String> backedUpCollection = map.values();
// Remove something from collection and check the maps content
backedUpCollection.remove("Two");
// Output is "{1=One, 3=Three}"; "Two" was removed
System.out.println(map);
// Add an entry to the map and check the content of collection
map.put(4, "Four");
// Output is "[One, Three, Four]"; "Four" was added
System.out.println(backedUpCollection);
你说:
Connected in the sense means if I add any thing in map then it should be copied in ArrayList and viceversa.
但是假设您向数组列表中添加一些内容,您希望散列映射的键是什么?
一旦您决定了每个用例的行为,我建议的解决方案是编写您自己的添加和删除函数,这些函数总是 add/remove 来自数组和散列的值。然后你可以使用那些方法,这些方法环绕着 Java 提供的方法,而不是直接使用它们。