Java 如何将键值元素从一个哈希表复制到另一个哈希表
我正在尝试将前5个键值对从哈希表1复制到哈希表2 然后是从哈希表1到哈希表3的第6到第10个键值对Java 如何将键值元素从一个哈希表复制到另一个哈希表,java,Java,我正在尝试将前5个键值对从哈希表1复制到哈希表2 然后是从哈希表1到哈希表3的第6到第10个键值对 我无法继续进行此操作,任何人是否有任何提示请与我共享尝试类似的操作 Hashtable h = new Hashtable(); Hashtable h1 = new Hashtable(); Hashtable h2 = new Hashtable(); Set s = h.keySet(); int i = 0; for (Object key : s) { if ( i++ <
我无法继续进行此操作,任何人是否有任何提示请与我共享尝试类似的操作
Hashtable h = new Hashtable();
Hashtable h1 = new Hashtable();
Hashtable h2 = new Hashtable();
Set s = h.keySet();
int i = 0;
for (Object key : s) {
if ( i++ < 3) {
h1.put(key, h.get(key));
} else {
h2.put(key, h.get(key));
}
}
Hashtable h=新的Hashtable();
Hashtable h1=新的Hashtable();
Hashtable h2=新的Hashtable();
设置s=h.键集();
int i=0;
用于(对象键:s){
if(i++<3){
h1.put(key,h.get(key));
}否则{
h2.put(key,h.get(key));
}
}
根据需要添加泛型等。首先,您需要知道
哈希表不能保持插入元素的顺序,因此前5个可以是任意的
如果希望保留插入顺序,请使用LinkedHashMap
(如果希望它是线程安全的,可以将其包装在Collections.synchronizedMap()
中)
此外,还有一个名为NavigableMap
的界面,由TreeMap
实现,它提供了类似subMap()
的方法,但您需要知道从哪个键到哪个键(而不是使用索引)。这也将保存按键排序的条目
如果您只能依赖索引,除了使用LinkedHashMap
,我建议您使用以下通用解决方案:
<K, V> Collection<Map<K, V>> splitMap(Map<K, V> map, int count) {
if (count <= 0) {
throw new IllegalArgumentException("zero or negative count");
}
List<Map<K, V>> list = new ArrayList<Map<K, V>>();
Iterator<Entry<K, V>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
list.add(subMap(entries, count));
}
return list;
}
<K, V> Map<K, V> subMap(Iterator<Entry<K, V>> iterator, int count) {
Map<K, V> map = new LinkedHashMap<K, V>();
for (int i = 0; i < count && iterator.hasNext(); i++) {
Entry<K, V> entry = iterator.next();
map.put(entry.getKey(), entry.getValue());
}
return map;
}
集合拆分映射(映射映射,整数计数){
if(count抱歉,但我不知道这会造成什么困难。你能说明你到目前为止是否尝试过,并解释为什么它不起作用吗?哈希表条目通常是无序的。你能解释一下“前5个键值对”是什么意思吗?首先是什么顺序吗?@Matt,在我复制之前,每次我将条目添加到哈希表中,