侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

可存重复键的HashMap

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 107 阅读 / 1,096 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
键重复了就存成list,把重复键的值放在list里.

package com.ts.utils;

import java.util.*;
import java.util.function.BiConsumer;

public class SortMap<K, V> {
public TreeMap<K, Object> sortContain = new TreeMap<K, Object>();

public void put(K key, V value) {
    if (sortContain.containsKey(key)) {
        Object nowValue = sortContain.get(key);
        if (nowValue instanceof ArrayList) {
            ((ArrayList) nowValue).add(value);
        } else if (nowValue instanceof String) {
            ArrayList&lt;V&gt; temp = new ArrayList&lt;&gt;();
            temp.add((V) nowValue);
            temp.add(value);
            sortContain.put(key, temp);
        }
    } else {
        sortContain.put(key, value);
    }
}

//在jsp里用 action里的东西会变
public void forEach(BiConsumer<K, V> action) {
Objects.requireNonNull(action);
sortContain.forEach((key, value) -> {
if (value instanceof ArrayList) {
((ArrayList) value).forEach((value1) -> {
action.accept(key, (V) value1);
});
} else if (value instanceof String)
action.accept(key, (V) value);
});
}

public Map.Entry&lt;K, Object&gt; firstEntry() {
    return sortContain.firstEntry();
}

public Map.Entry&lt;K, Object&gt; higherEntry(K key) {
    return sortContain.higherEntry(key);
}

public void clear() {
    sortContain.clear();
}

}

0

评论区