首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

如何区分Set里的元素不重复

2012-10-25 
怎么区分Set里的元素不重复Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用还是equals()

怎么区分Set里的元素不重复
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。

总结:
1. equals() 判断对象内容
2. == 判断对象引用
3. Iterator 用来遍历容器中的元素

测试代码:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetTest {
    //结果输出为ELEM
    static void AddToSet(){
        String str = "ELEM";
        String str1 = new String("ELEM");
        Set set = new HashSet();
        Set setCompare = new HashSet();
        set.add(str);
        set.add(str1);
        setCompare.add(str1);
        //Iterator是用来遍历容器中的元素的
        Iterator itera = set.iterator();
        Iterator iteraCompare = setCompare.iterator();
        while(itera.hasNext())
        {
            System.out.println((String)itera.next());
        }
        while(iteraCompare.hasNext())
        {
            System.out.println((String)iteraCompare.next());
        }
        if(set.equals(setCompare)){
            System.out.println("两个对象内容相同");
        }
        if(set == setCompare){
            System.out.println("两个对象相等");
        }
       
    }
    public static void main(String[] args){
        SetTest.AddToSet();
    }

}

热点排行