java path5

集合框架:
    什么是集合?用来存储数据的容器,不需要考虑容量问题,会自动扩容
    处理集合时一定要重写equals方法
    Collection:集合的父类,是一个接口。有两个子接口:(重复是指元素之间使用equals方法比较)
        List:有序可重复
            子类型:ArrayList:线程不安全,效率非常高,增删慢,查找快
                      LinkList:增删快,查找慢
                      Vector:线程安全,但效率低
        Set:无序不可重复

1.父接口Collection
    常用方法:
        add():增加元素
        remove(Object obj):删除确定对象
        addAll(Collection c):把参数集合元素加到集合上
        removeAll(Collection c):移除交集
        retainAll(Collection c):保留交集
        clear():清空元素
        isEmpty():判断集合是否为空
        size():返回集合元素个数
        toArray():将集合对象转换成数组
2.List子接口----线性表
常用实现类:
    ArrayList:是线性结构,内部封装的是动态的数组。长度的增加和减少已经被封装,可理解为自动的。
        查找快,增删慢(线程不安全,效率高)
    LinkedList:是链表结构。一个元素里存了前一个元素的地址和后一个元素的地址,连到一起很想链条。
        增加删除快,查找慢
    Vector:线程安全,效率低
    List接口提供的方法:    
        remove(int index):按照下标删除        
        add(int index, object obj):插入元素
        get(int index):获取元素
        indexOf(Object obj):返回元素下标,值为-1时无此元素
        contains(Object obj):判断集合是否包含obj
3.增强for循环,用来遍历集合或数组。是迭代的另一种写法,不是新语法。编译器会将此循环编译成迭代写法
结构:
    for(元素类型    变量名:集合或数组的变量){
    
    }
4.泛型机制
    泛型机制的本质是参数化类型。在类,接口和方法的定义过程中,可以进行指定参数类型。
    泛型机制不能使用八大基本数据类型
    
    在集合框架中,所有的集合类型都使用了泛型机制。
    好处是在进行参数化类型后,就可以限制集合元素的类型,
    编译器会通过指定的泛型进行检查。减少代码在运行时的错误
    public class ArrayList<E>{
        ......
        public boolean add(E e);
        public E get(int index);
        ......
    }
    ArrayList使用泛型机制,E就是类型参数。在具体使用时,需要给E赋值,赋的值是类型名。
    List<String> list = new ArrayList<String>();
    
5.集合的存储
    集合元素都是引用类型。集合对象内存的是元素的地址信息,不是元素本身
6.集合工具类:Collections(注意与Collection的区别)
    比较常用的方法,其中就有sort(),用来给集合排序。
    既然能使用sort()对集合进行排序,说明元素之间是可以比较大小的。
    能使用sort()进行排序的元素类型必须实现comparable接口,必须重写接口里的compareTo(Object obj)方法,
    这个方法就是用来进行元素之间的比较的
    this>obj,返回>0的数
    this<obj,返回<0的数

    this=obj,返回0

7.集合常用方法:
    subList(int fromIndex, int endIndex):取子集
    Collections.sort(List<T>):对集合里的元素进行排序(自然排序)(升序)
        如果放进集合的元素(例如点的对象)想要排序,元素类型必须实现Comparable接口
         比较接口Comparable也是有泛型的,泛型参数传实现类
        当前元素与传进来的元素进行比较,规则自己定义
8.Comparable与Comparator的区别
    集合想排序,那么元素类型必须实现Comparable接口,重写compareTo(Object obj);
    Comparator 比较器接口是临时改变排序规则时使用的,重写compare(Object obj1,Object obj);
        使用方法:sort(Collection c, Comparator c);
    return this-obj时是升序;return obj-this时是降序
9.队列Queue:
    是一个接口。特点是只能一端进,另一端出(FIFO)。
    而LinkedList就是Queue的实现类(没有ArrayList来实现Queue,原因是队列经常要增删操作)
    常用方法:
        offer(E e):表示进入队列
        poll():表示队首出队列,返回这个元素
        peek():表示查看队首

10.Deque:队列的子接口,是双端队列,两端都可以进出。

------------------------------------------

复习:
    Collection(接口)-------Collections(工具类)
    子接口:List(线性表)----Set
        实现类:ArrayList:底层是动态数组
                 LinkedList:底层是链表
        链表向上造型成Queue(队列接口),特点是先进先出(FIFO)
            进:offer(E e)
            出:poll()
            查看:peek()
        链表向上造型成Deque(双端队列接口),特点是两端都可以进于出
            进:offerFirst(E e)        offerLast(E e)
            出:pollFist()            pollLast()
            查看:peekFist()            peekLast()
        双端队列禁止一段的进出就变成了栈,特点是先进后出(FILO)
            进:push(E e)
            出:pop()
            查看:peek()
-------------------------------------------------------------------
1.Set接口:无序,不可重复(元素之间的equals方法比较)
        无序:与放入顺序不一致(比喻:List好比一个有格子顺序的盒子,Set好比一个袋子)
    实现类:HashSet:底层是基于散列算法(哈希算法)来存储的数据结构
           treeSet:底层是基于有序的二叉树的数据结构
2.重写HashCode方法和equals方法后的成立关系
    哈希值相同,equals方法不一定为true
    哈希值不同,equals方法一定为false
    equals方法为true,哈希值一定相同
    equals方法为false,哈希值有可能一样
3.Map接口(散列表):存储数据是以key-value形式存储的。
    key相当于value的索引。作为key的对象类型必须重写hashCode方法,因为key也是唯一不可重复的。
    Map的key底层就是HashSet。
    key值可以为null,但只能有一个
    Map接口提供的常用方法:
        put(K k,V v):作用是向Map对象中添加元素
        get(K k):作用是通过k获取对应的value值。
            当Map中没有相应的k,那么返回的value就是null
    Map接口最常用的实现类:HashMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值