键重复了就存成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<V> temp = new ArrayList<>();
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<K, Object> firstEntry() {
return sortContain.firstEntry();
}
public Map.Entry<K, Object> higherEntry(K key) {
return sortContain.higherEntry(key);
}
public void clear() {
sortContain.clear();
}
}
评论区