java 学习之路-----容器

容器:

 

 

  • 1. 容器API结构图(*)

 

 

 

  • 2. 数组也是一种容器,但是他们是有区别的,数组与本章容器的区别

 

1) 在使用过程中,数组一旦确定长度,那么这个数组就会变成一个长度不可变的容器,

假如后期需要为数组扩充容量,只能重新创建一个新的数组。

2) 容器提供了一系列方法使得容器可以根据需要扩充长度或减少长度。

 

 

  • 3. Collection :定义存储一组对象的方法,Set、List定义其存储方式

 

 

Set中的数据对象没有顺序且不可以重复

List中的数据对象有顺序且可以重复

(不能放置基本数据类型的对象,思考一下原因?)

 

原理:java.lang.Object.equals()、 java.lang.Object.hashCode() - 索引

 

   Map :定义存储一对对象的方法(key - value 对)

 

 

  • 4. 问题:Collection c = new ArrayList(); 与 ArrayList c = new ArrayList();的区别:

 

父类引用指向子类对象,只能使用父类中定义的方法。

(*)这是java的标准

三流的公司卖产品,二流的公司卖服务,一流的公司卖标准

 

 

  • 5. 深层次剖析 PrintStream类的println(Object obj)方法:

 

Println默认调用对象的toString()方法,如果该对象的类中没有重写Object类的toString()

方法,则调用其父类的toString()方法

 

 

 

 

  • 6. equals 与 hashCode方法

 

容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法,对于自定义的类型,需要重写equals方法和hashCode方法以实现自定义的对象相等规则

相等的对象应该具有相等的hashCode

当一个对象当做索引的时候会用到hashCode(),使用hashCode效率比较高

两个对象equals, 那么他们的hashCode一定相等

详见:java03/day18/TestCollection.java

 

 

  • 7. Iterator 接口 (统一遍历集合类)(*)

 

所有实现了Collection接口的容器类都有一个iterator()方法,该方法返回一个实现Iterator接口的对象。

Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。

Iterator 在循环遍历时会将容器锁定,无法使用对象本身的remove方法

Iterator 接口提供以下方法:

- boolean hasNext() //判断游标右边是否有元素

- Object next() // 返回游标右侧的元素并将游标移动到下一个位置

- void remove() //删除游标左边的元素,执行完next之后该操作只能执行一次

 

 

 

  • 8. 增强版for循环

 

方便的遍历容器中的元素。

缺点: 数组: 不能方便的使用下标

   集合: 不能方便的删除元素

原因:内部使用iterator

(*) 除简单遍历读取外,不建议使用增强for

 

 

  • 9. Set接口 :Set是Collection接口的子接口, Set中的元素无顺序、不可重复。

 

常用实现类 hashSet

 

  • 10. List接口: List是Collection接口的子接口,List中的元素有顺序、可重复。

 

常用实现类 ArrayList(底层数组)、LinkedList(底层链表)

 

  • 11. Set与List接口区别、测试retainAll() 和 addAll()方法

 

 

 

  • 12. java.util.Collections类

 

提供一些静态方法实现基于List容器的一些常用算法

Void Sort(List l) 对List容器进行排序 ,unicode码从小到大排序,小在前

Void shuffle(List l) 对List容器内的对象进行随机排序

Void reverse(list l) 逆序排序

Fill(List l,Object o) 用一个特定对象重写整个List容器

Void copy(list list1 ,list list2) 将list2拷贝到list1

Int binarySearch(list l , Object o) 对于顺序list按照折半查找法查找对象

 

 

  • 13. java.lang.Comparable 接口 实现排序接口

 

若想自定义某个类在集合中的排序方式,可实现该接口并重写comparaTo()方法

排序方法只能用在实现了Comparable接口的类。

 

 

  • 14. Map

 

 

  • 15. 泛型

 

posted @ 2017-07-03 21:04  Zero豪  阅读(150)  评论(1编辑  收藏  举报