1、如何利用set、list做检查重复的功能
代码展示
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("D");
list.add("C");
list.add("B");
System.out.println("list === > " + list);
Set<String> set = new HashSet<String>();
for(String s : list) {
set.add(s);
}
System.out.println("set === >" + set);
if(set.size() != list.size()) {
System.out.println("有重复的元素存在");
}
}
上述代码的运行结果是:
list === > [A, B, D, C, B]
set === >[A, B, C, D]
有重复的元素存在
2、为什么会有上述效果呢?
ArrayList的add方法
/**
* {@inheritDoc}
* @throws IllegalArgumentException if this {@code AttributeList} is
* <a href="#type-safe">type-safe</a> and {@code element} is not an
* {@code Attribute}.
*/
@Override
public boolean add(Object element) {
adding(element);
return super.add(element);
}
HashSet的add方法
public boolean add(T o) {
if (!o.getClass().isAssignableFrom(c)) {
MessageFormat form = new MessageFormat(ResourcesMgr.getString
("attempting.to.add.an.object.which.is.not.an.instance.of.class"));
Object[] source = {c.toString()};
throw new SecurityException(form.format(source));
}
return set.add(o);
}
3、结论
List接口中的内容可以重复
Set接口不能加入重复元素,但是可以排序