Vector 和 ArrayList去重

来源:互联网 发布:淘宝重复铺货怎么办 编辑:程序博客网 时间:2024/05/01 20:56
package com.darren.test.collection;import java.util.HashSet;import java.util.Set;import java.util.Vector;public class VectorTest {    public static void main(String[] args) {        Vector<String>vector = new Vector<String>();        vector.add("aaa");        vector.add("bbb");        vector.add("aaa");        vector.add("ccc");        System.out.println("原始的数据内容");        print(vector);        // 如何去除重复的值,请看下面的两个方法        System.out.println("遍历去重结果:");        print(removeDuplicateValue(vector));        System.out.println("HashSet去重结果:");        print(removeDuplicateValue1(vector));    }     // 方法1,使用遍历的方式去除重复值    private static Vector<String> removeDuplicateValue(Vector<String>source) {        Vector<String>newVector = new Vector<String>();        int size = source.size();        for (int i = 0; i < size; i++) {            Stringvalue = source.get(i);            if (!newVector.contains(value)) {                newVector.add(value);            }        }        return newVector;    }    // 方法2,使用HashSet去重的特性来完成要求    private static Vector<String> removeDuplicateValue1(Vector<String>source) {        Set<String>set = new HashSet<String>(source);        Vector<String>newVector = new Vector<String>(set);        return newVector;    }    private static void print(Vector<String> source){        int size = source.size();        for (int i = 0; i < size; i++) {            System.out.println(source.get(i));        }    }}

运行结果:

原始的数据内容

aaa

bbb

aaa

ccc

遍历去重结果:

aaa

bbb

ccc

HashSet去重结果:

aaa

ccc

bbb

ArrayList 和Vector的方式一样,不再写重复代码

但是此时细心的同学发现这两种去重方法结果不一致,这是因为HashSet是无序的,或者说它不能保持输出的顺序与进入的顺序是一致的,我们可以用以下方法来解决这个问题:

    private static Vector<String> removeDuplicateValue2(Vector<String>source) {        Set<String>set = newLinkedHashSet<String>(source);        Vector<String>newVector = new Vector<String>(set);        return newVector;    }

把HashSet换成LinkedHaseSet就可以了,LinkedHaseSet可以保持输出顺序与进入顺序一致。

0 0
原创粉丝点击