深入java--持有对象(集合基础)

笔记:

1 Collection中含有Queue,Queue按照排队规则来确定对象产生的顺序(通常和他们被插入的顺序相同),queue只允许在一端插入对象 在另一端删除对象

2 LinkedList具有List接口中没有的方法,而TreeMap中也有Map中未包含的方法,因此,如果你需要使用这些方法,不能将他们向上转型为更通用的接口,即多态

3 容器也可以像数组一样使用for each循环

4 如果加入泛型,那么在get时就不需要类型转换,否则为Object

5 当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表。在以前的Java代码中,可以使用Object数组来实现这样的功能。因为,所有的类都是直接或间接继承于Object类。

6 addAll就是加对象的全部的意思

  Arrays.asList()方法接受一个数组或者是一个用逗号分隔符的元素列表(使用可变参数将其转换为一个List对象),所以底层是数组,所以若使用add或delete会报错

  Collections.addAll()方法接受一个collection对象,以及一个数组或者是逗号分隔的列表,将元素添加到collection中去

  collecton.addAll()方法只能接受collection对象作为参数,不如Collections.addAll()方法灵活,Collections.addAll(collection,11,12,shuzu)

7 LinkedHashSet也是Set的一种,他按照被添加的顺序保存对象。HashSet使用的是相当复杂的方式来存储元素,这种方式是获取元素最快的方式,因此顺序并无意义,你只会关注一个元素是否是Set的成员。如果顺序很重要,可以使用TreeSet来保存对象,他按照比较结果的升序来保存对象

8 Map包括HashMap 他提供了最快的查找技术,TreeMap按照比较结果的升序来保存键,而LinkedHashMap则按照插入的顺序来保存键,同时还保留了HashMap的查询速度。

9 ArrayList擅长随机访问,但是在List的中间进行插入和移除元素时比较慢

  LinkedList随机访问比较慢,但是插入和移除比较快

10  Collections.sort(List<T> list)
          根据元素的自然顺序 对指定列表按升序进行排序

11 ListIterator是一个更强大的Iterator子类型,它只能用于各种List子类的访问。(1)尽管Iterator只能向前移动,但是listIterator可以双向移动,(2)它还可以产生相对于当前位置和前一个和后一个位置的索引,(3)并且可以使用Set()方法替换元素,在while循环里面就可以替换整个集合元素,(4)而且可以通过.listIterator(n)方法指向一个索引为n的迭代器ListIterator.

12 LinkedList有许多栈,队列,双向队列的方法

13 Stack 栈也是一种容器,LinkedList具有能够实现栈的所有方法因此可以直接把linkedList当做栈使用,不过有时候一个真正的栈更好。

11 Set具有和Collection完全一样的接口,没有任何额外的功能,不想两个List,实际上Set就是Collection.Set最长用来被测试归属性,所以你很容易查询某个对象是否在Set中。

12 TreeSet将元素存储在红黑树数据结构中(从小到大排列 ),HashSet使用的是散列函数,LinkedHashList因为查询速度的原因也使用了散列,只不过看起来像用链表来维护元素的插入顺序。

13 Map里面的值可以放入其他的容器 甚至是Map 所以Map可以形成强大的数据结构 比如 Map<Person,List<Pet>>可以跟踪一个有很多宠物的人。 keySet() 方法返回所有键的set集合。

14 Queue是一个典型的队列  先进先出的集合容器,队列在并发编程中特别重要,因为他们可以安全的将对象从一个任务传递给另一个任务。LinkedList提供了方法以支持队列的行为,而且LinkedList实现了Queue接口,LinkedList可以向上转型为Queue. offer()方法是Queue相关的一个方法,将一个元素插入到队尾,或者返回false。peek()和element()方法都在不移除的情况下返回队头,但peek会在队列为空的时候返回Null 而element会在队列为空时报异常。 poll和remove方法移除并返回删除的队头,但是poll会在队列为空时返回null,而remove会报异常。 Queue a=new LinkedList()  这时  Queue窄化了LinkedList方法  只有适当的方法才可以访问。

15 PriorityQueue是有优先级的队列  下一个弹出的元素师优先级最高的,在offer插入的的时候,默认是自然顺序,但是可以通过更改自己的Comparator来修改这个顺序。这样当你调用peek poll remove方法时  第一个出来的是优先级最高的元素。

16 Collection接口继承了Iterator  所以实现Collection接口必须实现iterator方法   Map没有实现    所以实现collection接口的集合要遍历时候最好用for each方法  这样更简单 不要用迭代器(因为collection就是iterator型)

17 Map a是一种对象雨对象进行关联的设计。

18 Stack HashTable Vector已经过时 不应该使用

19 Collection 包括 list set Queue


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值