当前位置: 代码迷 >> J2SE >> 关于HashSet中加入重复元素的有关问题……
  详细解决方案

关于HashSet中加入重复元素的有关问题……

热度:66   发布时间:2016-04-24 12:15:40.0
关于HashSet中加入重复元素的问题……
不知道向HashSet中加入重复的元素,后加入的元素是将前面元素覆盖掉了?还是后加入的元素被过滤掉根本就没有加进去?
===============看这个程序:

Java code
import java.util.*;public class AboutSet {    public AboutSet(){        List<String> list=new ArrayList<String>();        list.add("2");        list.add("3");        list.add("4");                        Set<String>  set=new HashSet<String>();        set.add("2");        set.add("3");        set.add("4");                set.addAll(list);        set.removeAll(list);                Iterator<String> iterator=set.iterator();        while(iterator.hasNext())            System.out.println(iterator.next());            }    public static void main(String[] args) {        new AboutSet();    }}

如果不是覆盖的话,那为什么set.removeAll(list)后,再输出Set里面的元素,就没有了呐?


------解决方案--------------------
Java code
public class AboutSet {    public AboutSet() {        List<String> list = new ArrayList<String>();        list.add("2");        list.add("3");        list.add("4");        Set<String> set = new HashSet<String>();        set.add("2");        set.add("3");        set.add("4");        System.out.println(set.addAll(list));        System.out.println(set.add("5"));        System.out.println(set.add("4"));        set.removeAll(list);        Iterator<String> iterator = set.iterator();        while (iterator.hasNext())            System.out.println(iterator.next());    }    public static void main(String[] args) {        new AboutSet();    }}
------解决方案--------------------
boolean addAll(Collection<? extends E> c)
如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中.
所以
set.addAll(list);这一句返回false!也就是说set没有改变。里面没有加进去元素

boolean removeAll(Collection<?> c)
移除 set 中那些包含在指定 collection 中的元素
list中有set里面仅有的元素:“2”、“3”、“4”,删除之后就空了。
如果set中还有一个元素“5”,则会把“5”输出。
如果list中没有元素“2”,则会把“2”输出!
  相关解决方案