zoukankan      html  css  js  c++  java
  • 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. 泛型
  • 相关阅读:
    vue之实现日历----显示农历,滚动日历监听年月改变
    vue填坑之全局引入less,scss,styl文件
    vue填坑之引入iconfont字体图标
    纯JS实现带小圆点缩略图及左右箭头的轮播图
    canvas绘制时钟
    CSS实现鼠标移入图片边框有小三角
    jquery之.outerWidth()
    CSS ::selection 选中文字效果
    LINUX下用Nginx和Node.js构建一个简单的项目(4)
    LINUX下用Nginx和Node.js构建一个简单的项目(3)
  • 原文地址:https://www.cnblogs.com/xuewuzhijing95hao/p/7113042.html
Copyright © 2011-2022 走看看