Java删除重复的数据

时间:2015-06-17 12:44:26

标签: java arraylist hashmap

是否可以在arraylist或hashmap中获取所有不同的值?

让我们说例如我在arraylist上有这样的元素:

123, 123, 456, 123, 456, 000

在HashMap中:

123, test1
123, test2
456, test3
123, test4
000, test5

5 个答案:

答案 0 :(得分:4)

键在HashMap中应该是唯一的。如果您选择重复键,则现有键值将替换为新值。

如果您想避免重复,请使用Set

答案 1 :(得分:0)

HashMaps不允许重复键。如果您输入已经存在的密钥,则将其替换为新密钥。

答案 2 :(得分:0)

如果您使用的是Map,根据定义,这些键将是唯一的。对于List的实现,有几个选项。对于Java 5到Java 7

public <T> List<T> removeDuplicates(List<T> list){
    Set<T> set = new LinkedHashSet<>(list);
    return new ArrayList<>(set);
}

使用Java 8

public <T> List<T> removeDuplicatesJava8(List<T> list){
    return list.stream().distinct().collect(Collectors.toList());
}

答案 3 :(得分:0)

如果您想将多个值映射到某个键,则可以使用Map<K, V[]>(或public static void main(String[] args) { Map<Integer, List<String>> data = new HashMap<>(); add(data, 123, "test1"); add(data, 123, "test2"); add(data, 456, "test3"); add(data, 123, "test4"); add(data, 0, "test5"); data.forEach((k, v) -> System.out.println(k + " -> " + v)); } static <K, V> void add(Map<K, List<V>> listMap, K key, V value) { List<V> values = listMap.get(key); if(values == null) { values = new ArrayList<V>(); listMap.put(key, values); } values.add(value); } ):

<强>代码:

0 -> [test5]
456 -> [test3]
123 -> [test1, test2, test4]

<强>输出:

set java_exe=%JAVA_HOME%\bin\java.exe

答案 4 :(得分:0)

要从List获取Set<Object> set = new HashSet<Object>(nonUniqueList); 个唯一元素,您可以执行此操作

    String book = request.getParameter("book");
    for(Book book : arrBook){
        if(radio.equals(book.getBookid())){ 
            out.prinlnt(book.getBookid()+ " book ID was selected...");
            break;
        }
    }