java集合总结

java中集合类的总结:

一、collection <>接口(又称集合操作类)---保存对象 有以下几个子接口:

     1、list接口---有顺序,可重复
 
(1)ArrayList 类似于数组形式的存储,访问速度快,删除插入效率低
       (2)LinkedList(实现了List和Queue两个接口)
                    内部实现是双向循环链表,适合频繁的插入删除操作。用于构建堆栈或者队列
                    由于它实现了List接口和Queue接口,因而具备这两个接口的方法和属性,

                        list.pop();//移除列表的最前面的元素
                        list.push(123);//添加到列表的最前面
                        list.add("abc");//添加到列表的最后面

       (3)Vector向量,实现了list接口
       (4)Stack类

 
         ArrayList 和 Vector比较
         a、ArrayList是异步,不能保证线程安全,Vector 是同步的,可以保证线程安全
         b、从内部实现机制讲:当增加元素时,元素数目超出了内部数组目前的长度,需要扩展内部数组的长度时,
               Vector在缺省情况下,自动增长为原来的一倍,而ArrayList则增长原来的50%,
                 若要保存大量的数据,使用Vector有优势。

     2、set接口---没有顺序,不可重复

         (两个元素相等的条件,hashcode值相等,equals方法返回true;
           添加元素时,会调用该对象的hashcode()方法,判断与已存在的元素hashcode值是否有相同的,
           如果没有,就直接添加,如果没有使用equals方法返回true,则不添加该重复元素,返回false则添加该元素)

            实现类:

            hashSet类:散列存放,线程不安全
            TreeSet类:有序存放
排序 方法一:实现comparable接口,重写comparaTo()方法,
                             方法二:实现comparator接口,重写compare(o1,o2)方法
                                   (TreeSet是SortedSet接口的唯一实现类)

     3、Queue接口()--一个有序的对象列表,就像List一样,但是它的使用有略微的区别。
                                      Queue被设计成从末端插入并且从头部删除的形式。

               实现类
            (1)LinkedList(如List接口中的介绍)
            (2)PriorityQueue保存数据默认是根据内部的自然排序,如果指定了Comparator比较器,

              则会使用比较器进行排序。


二、map 接口的子类 -- 保存键值对。
      实现类
   (1)HashMap<>  a、异步的,适用于不需要线程安全的。b、可以将一个空值做为一个条目
   (2)HashTable<>a、同步的,可以保证线程安全。      b、不能存放空值
    ( 3 )TreeMap<>间接继承了map接口 也不能存放空值 
    ( 4 )Properties  继承了HashTable ,以键值对方式存储 
                           # 表示注释,
                                 键=值,键不可以换行,值换行用“\”表示
                                  值可以没有,但是不能没有键,没有值时 ,=号:可有可没有

   map集合的三种输出方法:

(1)、通过EntrySet方法变成set对象;
        调用set的Iterator方法,此时每个Iterator对象都是Map.entry对象;
        然后分离Map.entry中的key-value
 
              Set<Entry<key,Value>> set=hashmap.entrySet();
              Iterator<Entry<key,value>> it=set.iterator();
               while(it.hasnext())
               {
                   it.next();
               }
(2)、通过keySet方法得到Map集合中的key  Set集合;
      调用iterator方法,此时每个Iterator对象是key值(也可使用for each循环输出)
      通过map 的getValue(key)得到value值
 
             Set<Key> set=hashmap.keySet();
             Iterator<Key> it=set.iterator();
               while(it.hasNext())
             {
               String key=it.next();
               String value=hm.getValue();
            }
 
(3)、只输出value值
        Collection<String> s=hm.values();
       for(String s1:s)
        {  sysout (s1);}

    

总结:
1、若要求线程安全,使用Vector,Hashtable
2、若不要求线程安全,应使用ArrayList/LinkedList/HashMap
3、要求键值对,使用hashmap/hashtable
4、数据量比较大,又考虑线程安全,使用vector


三、Iterator 接口
     迭代器:开始指向第一个位置的下一个元素
常用hasNext()  和next()方法
常用于遍历集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值