java中的集合框架

                                            java中的集合框架

                             

1.泛型,jdk1.5版本以后引出的一种安全机制,用于解决安全问题。

            好处有两个,1.将运行时期的类型转换异常转移到编译时期,方便程序员发现问题。

                                  2.避免强制类型转换麻烦

           

2.Collection

     |--List               集合内的元素是有序的,元素是可以重复的,原因是存在索引。

          |--ArrayList  底层数据结构采用数组形式,查询速度快,增删速度慢

          |--LinkList    底层数据结构采用链表形式,查询速度慢,增删速度块

          |--Vector      底层数据结构采用数组形式,查询速度很快,增删速度较慢,和ArrayList一样只是

                              比Collection出现的都早,另一区别是Vector是线程同步而ArrayList不同步。

                               枚举是Vector特有的去元素方式,现在被迭代器取代。

                             所谓线程不同步是在集合遍历时会用到迭代器,而在ArrayList遍历时不可以在

                              向集合遍历时还向集合中加入或删除元素,

     |--Set                集合内的元素是无序的(存入和取出不一定是有序的),元素是不可以重复的

          |--HashSet   底层数据结构采用哈希表

                              它是如何保证数据的唯一性那?

                              通过hashCode()和equals()两个方法。

                               实际开发时要重写两个方法,线比较hashCode()若不同则直接存进去,若相同则在进入


                                equals()方法比较对象,若相同则直接丢弃若不同则在在相同地址处存入。

                                注意,对于判断元素是否存在和删除等操作,需要比较地址和对象也就是执行hashCode()

                                和equals().

          |--TreeSet      可以对Set集合中的元素进行排序。
                                底层数据结构是二叉树。
                                保证元素唯一性的依据:
                                compareTo方法return 0.
                                TreeSet排序的第一种方式:让元素自身具备比较性。
                                元素需要实现Comparable接口,覆盖compareTo方法。
                                 也种方式也成为元素的自然顺序,或者叫做默认顺序。
                                TreeSet的第二种排序方式。
                                 当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                                 在集合初始化时,就有了比较方式。

                                

 3.Map集合:该集合存储键值对,一对一对往里存,但是要保证建的唯一性。

             |---HashTable:底层是哈希表,不可以存储null建和null值,线程同步。

             |---HashMap:底层是哈希表,可以存储null建和null值,该集合是线程不同步的。

                                  Map集合去除元素的取出方式

                                  方式一:Set<k> = map.keySet();把map中的键值取出放到Set中,

                                                  然后使用迭代器取出键值,再根据键值取出value

                                  方式二:Set<Map.Entry<String,String>> set = map.entrySet();

                                                Iterator<Map.Entry<String,String>> it = set.Iterator();

                                                while(it.hasNext())

                                                    Map.Entry<String,String> me = it.next();

                                                      int key = me.getKey();

             |--TreeMap:底层是二叉树,可以根据key排序,线程不同步。

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值