LinkedHashMap 在指定元素/索引后面插入元素
思路是将指定元素/索引后面的元素先用 List
保存,然后将待插入的元素插入到 LinkedHashMap
中,然后先删除指定元素/索引,再进行添加。
指定元素后面插入元素
/**
* 在 LinkedHashMap 目标元素后面添加元素
*
* @param map LinkedHashMap 对象
* @param target 目标元素
* @param key 插入元素的键
* @param value 插入元素的值
* @param <K> 键的泛型
* @param <V> 值的泛型
*/
public <K, V> void add(Map<K, V> map, K target, K key, V value){
assert (map != null);
assert map.containsKey(target);
assert !map.containsKey(key);
// 保存目标元素后面的元素
List<Map.Entry<K, V>> rest = new ArrayList<>();
for (Map.Entry<K, V> entry : map.entrySet()) {
if (entry.getKey() != target) {
rest.add(entry);
}
}
map.put(key, value);
for (int j = 0; j < rest.size(); j++) {
Map.Entry<K, V> entry = rest.get(j);
// 先删除插入元素前面的,再添加到插入元素后面
map.remove(entry.getKey());
map.put(entry.getKey(), entry.getValue());
}
}