17370845950

java中map怎么去重
Java中Map去重方法:通过Set转换:使用Set转换Map的key或value,利用Set的自动去重特性。使用自定义Comparator:自定义Comparator比较Map的key或value,相同返回0,否则返回非0,再构造新的有序Map。利用第三方库:使用Guava或Apache Commons Collections等第三方库提供的方法去重。

Java中Map去重的几种方法

1. 利用Set

将Map的key或value转换为Set,Set具有自动去重的特性。

// 通过key去重
Set keys = map.keySet();

// 通过value去重
Set values = map.values();

2. 使用自定义Comparator

使用自定义Comparator比较Map的key或value,如果相等则返回0,否则返回非0。

Comparator comparator = new Comparator() {

    @Override
    public int compare(K key1, K key2) {
        // 自定义比较逻辑
        return 0; // 相等
    }
};

// 通过key去重
Map newMap = new TreeMap<>(comparator);
newMap.putAll(map);

// 通过value去重
Map newMap = new HashMap<>();
for (Entry entry : map.entrySet()) {
    if (!newMap.containsKey(entry.getValue())) {
        newMap.put(entry.getKey(), entry.getValue());
    }
}

3. 使用第三方库

可以使用Guava或Apache Commons Collections等第三方库提供的方法去重。

// 使用Guava
Map newMap = ImmutableMap.copyOf(map);

// 使用Apache Commons Collections
Map newMap = MapUtils.uniqueValues(map);