关于Set的学习

public class SetTest {  
  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
  
        Set<String> set=new HashSet<String>();  
        set.add("");  
        set.add("3");  
        set.add("1");  
        set.add("2");  
        set.add("5");  
        set.add("4");  
        //遍历方式1  
        Iterator i = set.iterator();  
        while (i.hasNext()) {  
            String object = (String) i.next();  
            System.out.println(object);  
        }  
        //遍历方式2  
        for(String value : set){  
            System.out.print(value+" ");  
        }  
          
        //TreeSet 默认排序  
        Set<String> tset=new TreeSet<String>();  
        tset.add("3");  
        tset.add("1");  
        tset.add("2");  
        tset.add("5");  
        tset.add("4");  
        //遍历方式1  
        Iterator i1 = tset.iterator();  
        while (i1.hasNext()) {  
            String object = (String) i1.next();  
            System.out.println(object);  
        }  
          
        //TreeSet 自定义排序  
        Set<String> tset2=new TreeSet<String>(new Comparator<String>() {  
            //降序  
            @Override  
            public int compare(String o1, String o2) {  
                // TODO Auto-generated method stub  
                return o2.compareTo(o1);  
            }  
        });  
        tset2.add("3");  
        tset2.add("1");  
        tset2.add("2");  
        tset2.add("5");  
        tset2.add("4");  
        Iterator<String> i2 = tset2.iterator();  
        while (i2.hasNext()) {  
            String object = (String) i2.next();  
            System.out.print(object);  
        }  
    }  
  
}  


一、从HashSet开始


public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, Serializable  

HashSet ,实现了Set接口,内部封装了hashmap。HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。HashSet 底层采用 HashMap 来保存所有元素。

HashSet 中的集合元素实际上由 HashMap 的 key 来保存,value永远为PRESENT。

HashSet里的元素,和HashMap里key的性质是一样的,同样可允许唯一一个元素为空,且是无序的。

HashSet 是非线程安全。


二、另一个TreeSet

public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>, Cloneable, SerializableTreeSet  
TreeSet和TreeMap相似

TreeSet使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值