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());
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM