(一)

1.集合大致分为四类:Set List Queue Map

2.集合类也被称为容器类


3.区别于数组,集合类只能保存对象(对象的引用值)


4.java集合类主要由俩个接口派生:Collection Map


5.Set(无序集合),List(有序集合),Queue都是Collection的子接口


6.Java所有集合大致可以分为三类:Set类似于一个罐子,把一个对象放入Set中时它无法记住放入的顺序;


  List像一个数组,可以记住每次添加元素的顺序,而且它的长度可变;

  Map也像一个罐子,无法记住添加顺序,但是它的每个数据项都是由俩个值组成;

(二)

7.可以直接使用下表来访问List中的元素;可以根据每个元素的key值来访问Map中的元素;只能通过元素本身来访问Set中的元素;


8.ArrayList 和 HashSet 虽然实现类不同但是他们可以使用相同的add clear 方法


9.所有的Collection类都实现了toString()方法


10.Iterable接口是Collection接口的父接口,所以所有的Collection类都可以使用Iterable接口的forEach方法


11.上述forEach方法的参数为一个Consumer接口(函数式接口),所以可以直接使用lambda表达式遍历Collection类


12.Iterator对象仅能依存于Collection对象,它的对象可用于遍历Collection对象,但是只是值传递的,所以不能修改Collection集合中的元素


   但是可以使用remove()方法删除试一次next方法返回的集合元素


   使用实例:book(HashSet类);得到book的Iterator对象:Iterator it = book.iterator()


13.java5提供了forEach方法遍历集合元素:for(Object obj : books)被遍历集合同样不能被修改


14.java8 为Collection对象新增了removeIf()方法 该方法参数为Preddicate函数式接口 因此可以使用lambda表达式


   例:books.removeIf(ele->((String)ele.length(),10))


15.不能向set集合中添加相同的元素,会报错

(三)

16.HashSet按Hash算法来存储集合中的元素,因此就有很好的存取和查找性能


17.HashSet 并不是线程安全的


18.HashSet判断俩个元素是否相同是先判断equals方法,再判断hashCode方法


19.LinkHashSet是HashSet的子类 使用链表来维护元素的次序 所以他可以根据元素的添加顺序来遍历集合


20.TreeSet是SortedSet接口的实现类,从名字可以看出来该类是通过元素大小来排序的,并不是添加顺序


21.TreeSet类中的元素必须实现Comparable接口,该接口中定义了compareTo()方法,TreeSet也是通过该类来排序的


22.java已经为一些常用类实现了Comparable接口,例如:String Time Date Character 等


23.使用compareTo()方法要求相同类型,这就导致TreeSet里的对象都是同一个类的实例


24.不能将俩个相等的对象放到TreeSet里,是否相等取决于compareTo()方法(即返回0)


25.如果后续程序更新了TreeSet中元素这不会使排序发生改变


26.TreeSet中某个元素被修改为与另一个元素相同是这俩个元素都不能被删除


27.在创建TreeSet时可以与一个Comparator函数式接口相关联来实现制定排序

(四)

28.List集合(接口)为一个有序的,可重复的,集合中每个元素都其相应的顺序索引的集合,其索引默认根据添加顺序设定 从0开始


29.List判断俩个对象相等是通过equals()方法的 String的equals()方法已经被重写过了


30.java8 提供了sort()和replace()俩个方法 sort()需要一个Comparator对象来控制元素排序


31.ArrayList 和 Vector 都是List的实现类 ArrayList常用 Vector比较古老,不推荐使用


32.ArrayList其实就是封装了一个动态的,允许在分配的Obect[]数组


33.ArrayList线程不安全 Vector相反 但是还是不推荐使用

(五)

34.Queue 队列接口 下有priorityQueue类 该接口为表中队列实现类 但是它是根据元素大小排序的并不是标准的先进先出


   排序方法和TreeSet差不多 也可以 自然排序 定制排序


35.Deque是Queue的子接口 ArrayDeque使它的实现类 双端队列 也实现了栈的方法


36.LinkList是List接口的实现类 可以根据索引访问元素 可以被当成双端队列 栈 方法也与上面介绍的ArrayDeque相同


   但是它的实现机制区别于上面类 内部用链表实现


37.从Java的源码来看,Java是先实现了Map然后将Map中的value值都置为null实现了Set


38.Map允许添加重复的key后来的会覆盖已经存在的


39.所有的Map实现类都重写了toString()方法


40.HashMap Hashtable都是Map的实现类,Hashtable比较古老 是线程安全的

(六)

41.Java提供了一个操作Set List Map等集合的工具类 Collections


42.Conllections可以将前面讲的一些类变为线程安全的类


 

以上是我个人看书的时候做的一些笔记