★★★易忘点总结〖集合〗

★1.StringBuffer与StringBuilder的区别
StringBuilder的速度快,效率高,但它是多线程的,较不安全。
 
★★2.|--List:元素是有序的,元素可以重复,因为该集合体系有索引;
              |--ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢,线程不同步。


              |--LinkedList:底层使用的是链表数据结构,特点:增删速度很快,查询稍慢。


              |--Vector:底层是数组数据结构,线程同步。被ArrayList替代了。 
★★3.|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
       |--HashSet:底层数据结构是哈希表。


                     HashSet是如何保证元素唯一性的呢?


                     是通过元素的两个方法,hashCode和equals来完成。


                     如果元素的HashCode值相同,才会判断equals是否为true。


                     如果元素的hashcode值不同,不会调用equals。


 


                     注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。


★★4.|--TreeSet:可以对Set集合中的元素进行排序。


                            底层数据机构是二叉树,保证元素唯一性的依据:


                            compareTo方法return 0;


                            TreeSet排序的第一种方式:让元素自身具备比较性;


                            元素需要实现Comparable接口,覆盖compareTo方法。


                            这种方式也称为元素的自然顺序,或者叫做默认顺序。


                            TreeSet的第二种排序方式。


                            当元素自身不具备比较性时,或者具备的比较性不是所需要的,


                            这时就需要让集合自身具备比较性


                            在集合初始化时,就有了比较方式。    
                            也可以实现comparator,然后把对象传到TreeSet的参数里


★★5.Map


       |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的,jdk1.0效率低


       |--HashMap:底层是哈希表数据结构,允许存入null键null值。该集合线程不同步的,jdk1.2效率高。


       |--TreeMap:底层是二叉树数据结构,线程不同步,可以用于各map集合中的键进行排序。


map和Set很像,其实Set底层就是使用了Map集合。


Hashtable用作键的对象必须实现hashCode方法和equals方法。 


            Map怎么取出全部元素?
            Map中没有Iterator,所以要先把Map转成Set,再用Iterator
★★★6.Map转成Set的方法
          Set s=map. keySet();
        或 Set s=map.entrySet();
7.


使用集合的技巧:
看到Array就是数组结构,有角标,查询速度很快。
看到link就是链表结构:增删速度快,而且有特有方法。addFirst; addLast; removeFirst(); removeLast(); getFirst();getLast();
看到hash就是哈希表,就要想要哈希值,就要想到唯一性,就要想到存入到该结构的中的元素必须覆盖hashCode,equals方法。
看到tree就是二叉树,就要想到排序,就想要用到比较。
比较的两种方式:
一个是Comparable:覆盖compareTo方法;
一个是Comparator:覆盖compare方法。
LinkedHashSet,LinkedHashMap:这两个集合可以保证哈希表有存入顺序和取出顺序一致,保证哈希表有序。
集合什么时候用?
当存储的是一个元素时,就用Collection。当存储对象之间存在着映射关系时,就使用Map集合。
保证唯一,就用Set。不保证唯一,就用List。 


8.collection 与Collections的区别
Collecito是接口,它是各类集合的父接口,主要是LIST和SET,提供了添加,删除,判断,遍历着。
而Collections是类,对针对集合的一个工具类,提供了一系列静态方法,有查找,替换,排序,安全转换功能等操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值