Collection下级接口集合以及Map详解与区别

简介

集合里的东西称为元素,由一个或多个元素构成的整体叫集合。

先看下图: 

Collection下级接口集合以及Map详解与区别

 

由图可知:

 iterator是collection的*接口

collection是list ,set的*接口,map与list set 没有关系

上图引出以下问题:

Collection下级接口集合以及Map详解与区别

 

iterable接口

               它是所有集合的*接口  实现它可以增强for循环(foreach  与简单for循环)

               同时想要实现Iterable接口的集合类必须提供一个iterable的方法,返回值为Iterable

               里面的方法为:

                                  hasNext():是否存在下一项
                                  next():获取下一项
                                  remove:移除下一项

Collection接口 

               1.属于java.util包里面的
               2.集合框架的*框架
               3.是Set和List的父接口 不是map的
                 里面的方法:
                                size:返回集合中的项数
                                isEmpty():判断集合中是否为空
                                contains(Object):判断集合是否包含某项
                                clear():
                                add():从集合中添加
                                remove(Object):移除某项
                                iterator():遍历集合

Collection集合remove(Object)和Iterable中的remove:

                Iterable的remove性能更加好点,同时容错方面也比Collection里面的要好

               collection是单链表结构 从集合一个一个找 才能找到需要remove的值    比较慢 

               Iterable的remove结合next方法使用 没指定 隔一个删一个 快

List接口

特点:可有重复元素,有顺序

ArrayList与linkedlist,vector都继承于list ,主要区别:

             1.ArrayList查询快 ,以连续的空间存储数据,一般我们查询都是用的ArrayList

             2.linkedlist查询慢,以链表的接口存储数据,一般session购物车用linkedlist删除修改

             3.ArrayList与vector  ,ArrayList是异步的 线程不安全,vector是同步线程安全

Set接口

特点:不可重复,对象无序

hashset,treeset,linkedhashset三者区别

             1.hashset :速度快 ,无序,有且仅有一个null值

             2.treeset:按照升序保存对象,不可重复

             3.linkedhashset:怎么进怎么出

Queue接口:

1.特点:先进先出

所谓消息队列有四个关键字:queue,message,looper,handler

message:消息

lopper:是用来封装消息循环和消息队列的一个类(一个线程只能有一个Looper,对应一个MessageQueue。 )

handler:是一个工具类,用来向消息队列中插入消息的

下图解释:

Collection下级接口集合以及Map详解与区别

Map集合

特点:无序,以键值对的形式添加元素,键不能重复,值可以重复。键只允许有一个null值,但是值可以有多个

hashmap与Treemap,Linkedhashmap区别:

             1.在map中插入,删除hashmap是最好的选择

             2.需要有集合的排序功能用treemap

             3.按照插入的顺序存储集合用linkedlist
遍历:
             先取出保存所有键的Set,在遍历Set。
             先取出保存所有Entry的set,在遍历set。

Arrays

数组转list

              Arrays.aslist(数组)

list转数组

             list.toArray()

问题解答:

Array与ArrayList有什么区别?

                 1.Arraylist是Array的复杂版本

                存储数据类型:2.Array只能存储相同类型数据  Arraylist可存储不同类型数据

                长度可变:3.Array长度固定  Arraylist长度可变

Hashmap和hashset区别?

                 hashmap是实现map接口 存储键值对 put添加 相当于hashmap快 使用唯一键获取对象

                 hashset实现set接口 存储对象 add添加 相当于hashmap较慢

List和set和map区别?

                1.List和Set都继承collection 但map不是它的子接口

                list:重复有序 可插入多个null元素 先进先出

               set:不重复 无序 只允许一个null元素 

               map:键值对存储 键不重复值重复 无序 允许一个空键 多个空值