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可以保持输出顺序与进入顺序一致。