java collections framework -----HashSet and TreeSet

本文详细介绍了Java中三种常用集合类型:List、Set和Map的特点及使用方法。List用于存放有序数据,支持重复元素;Set存放无序且不重复的数据;Map则通过键值对形式存储数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java的collection常用的有3种类型:List , Set ,Map

 

List对象,存放的数据是有序的,并且可以通过下标获取数据。数据可以重复存放在List中,

          如:List list = new ArrayList();

                list.add(1);

                list.add(1);

                此时list的size为2.

List的遍历可通过下标进行。

              for(int i=0;i<list.size();i++){

                     System.out.println(list.get(i));

                     }

             for(Object o:list){

                     System.out.println(o.toString);

                     }

 

Set对象,存放的数据是无序的,不能通过下标获取数据,并且存放的数据不允许重复。

           如: Set set = new HashSet();

                 set.add(1);

                 set.add(1);

                 此时set的size为1.

Set对象的遍历可通过迭代器遍历;

           Iterator i = set.iterator();

           while(i.hasNext()){

             System

            }

         也可 :

         Set<Object> set = new HashSet<Object>();

           for(Object o : set){

           System.out.println(o);

          }

Map对象,存放数据是通过k-value的方式存放,key代表存放数据的位置,value代表存放的数据值。

          比如:假设图书馆有一本编号为B0001KL的书,书名叫xxx,B0001KL代表书的编号可认为是key,而书xxx里面的内容,可认为是value。

             Map map = new HashMap();

            map.put(B0001KL,xxx.内容);

Map对象的遍历:

     Set set  = map.keySet();

    这里就将map的key存放在一个set对象中,通过遍历set获取map的key,再通过Key获取map的值

    如: Set<Integer> set = map.keySet<Integer>()

           for(Integer i : set){

                System.out.pritnln("key : "+i+" value :"+map.get(i));

 

 

Set 对象实现:

HashSet , TreeSet 类是jdk中提供的2个set接口的实现类。

HashSet是沿用HashMap的方式,使用hash表的存储方式。

通过Map,Set对象的特性可以明白,map的key不能重复,set的value不能重复,在jdk HashSet中,存储Set对象是,将set的value作为map对象的key值方法,

HashMap存放数据是,通过数组加链表的形式存储。

HashMap中,初始化时,系统建立Entity[]数组,Entity包含4个属性:

       final K key;
        V value;
        Entry<K,V> next;
        final int hash;

Entity之间的关系通过链表的形式实现。存放数据是,将key值通过hash函数生成hash,并将hash值作为数据的存在下标,取出数据同理。

 

同样的道理TreeSet也是采用同样的方式调用TreeMap实现,只不过TreeMap的存储方式为树形结构,在developerWorks有文章介绍是采用的红黑树结构实现的(具体采用那种数据结构实现,没有太深入的看源码,只是在学习红黑树的时候看到这篇文章有介绍),具体地址:http://www.ibm.com/developerworks/cn/java/j-lo-tree/ 。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值