java暑期学习笔记(5)

# 2018/07/13 #
* 1.集合
    * A:集合的由来
      * 数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少 
    * B:数组和集合的区别
      * 区别1 : 
        * 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值
        * 集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象
      * 区别2:
        * 数组长度是固定的,不能自动增长
        * 集合的长度的是可变的,可以根据元素的增加而增长
    * C:基本功能演示
        boolean add(E e)           //List会一直返回true,set重复时会false
        boolean remove(Object o)           //删除指定元素
        void clear()                       //清空元素
        boolean contains(Object o)         //判断是否包含
        boolean isEmpty()                  //判断集合是否为空
        int size()                         //获取元素个数
    *  D:把集合转成数组,可以实现集合的遍历 toArray()
    *  E:带All的功能演示
        //alt+shift+r 可以一起改名
        boolean addAll(Collection c)          添加整个集合
        boolean removeAll(Collection c)       删除交集,没有交集返回false
        boolean containsAll(Collection c)     判断是否包含集合
        boolean retainAll(Collection c)       
        取交集,如果调用后集合改变返回true,反之,返回false
    * F:迭代
        Iterator it = c.iterator();
        /*boolean b1 = it.hasNext();
        Object obj1 = it.next();
        System.out.println(b1);
        System.out.println(obj1);*/
        while(it.hasNext()) {
            System.out.println(it.next());
        }
* 2.List集合的特有功能概述  //有索引,可以重复,有序
      * void add(int index,E element)     index小于等于size
      * E remove(int index)         返回一个泛型(object类型)通过索引删除元素
      * E get(int index)                  通过索引获取元素,可以用作遍历使用
      * E set(int index,E element)        在索引处的元素修改
* 3.ListIterator的特有功能add,集合遍历元素,集合修改元素。
        ListIterator lit = list.listIterator();    
        * boolean hasNext()是否有下一个
        * boolean hasPrevious()是否有前一个
        * Object next()返回下一个元素
        * Object previous();返回上一个元素    
* 4.Vector类特有功能
    * public void addElement(E obj)
    * public E elementAt(int index)
    * public Enumeration elements()
* 5.A:数组
     * 查询快修改也快
     * 增删慢
    
    B:链表
     * 查询慢,修改也慢
     * 增删快
* 6.List有三个儿子
        查询多用ArrayList
        增删多用LinkedList
        如果都多ArrayList
* 7.ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同),创建新集合方式,并重写equals()方法,contains方法判断是否包含底层依赖equals方法(remove也是)
* 8.LinkedList类
    * public void addFirst(E e)及addLast(E e)
    * public E getFirst()及getLast()
    * public E removeFirst()及public E removeLast()
    * public E get(int index);
* 9.栈(先进后出)   队列(先进先出)
* 10.泛型:标识能存储的数据类型
    * 提高安全性(将运行期的错误转换到编译期),省去强转的麻烦。
    * <>中放的必须是引用数据类型 
    * 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)  
* 11.next方法只能调用一次,调用多次会让让指针移动
* 12.泛型类概述<T>
    * 把泛型定义在类上
    * 定义格式   public class 类名<泛型类型1,…>
* 13.泛型方法 public <泛型类型> 返回类型 方法名(泛型类型 变量名)
 * 非静态方法最好与类的泛型一致,不一致要在方法上声明
 * 静态方法必须声明自己的泛型
* 14.泛型接口
 * public interface 接口名<泛型类型>
 * 实现:
     * class Demo implements Inter<String>   //推荐这种
     * class Demo<T> implements Inter<T>
* 15.泛型通配符<?>
    * 任意类型,如果没有明确,那么就是Object以及任意的Java类了
    * ? extends E   向下限定,E及其子类
    * ? super E     向上限定,E及其父类
* 16.for(元素数据类型 变量 : 数组或者Collection集合) {
            使用变量即可,该变量就是元素
        }     //fore alt+/ 可以快捷
    底层依赖 Interator
* 17.三种迭代的能否删除
 * 普通for循环,可以删除,但是索引要 i--
 * 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
 * 增强for循环不能删除
* 18.静态导入是导入类中的静态方法
  * import static 包名….类名.方法名;
  * 若有多个同名的静态方法,容易不知道用谁,使用时意义不大,开发不用
* 19.可变参数是一个数组
 * 修饰符 返回值类型 方法名(数据类型…  变量名){}
* 20.asList()
 * 将数组转成集合,不能添加
 * 基本数据类型的数组转换成集合,会将一整个数组传给list
 * 将数组转换成集合必须是引用数据类型
* 21.Collection中toArray(T[] a)泛型版的集合转数组
 * 当集合转数组时,如果数组的长度小于等于集合的size时,转换后的数组长度等于集合的size,如果大于,分配的长度与指定长度相同
* 22.集合嵌套之ArrayList嵌套ArrayList
 * ArrayList<new ArrayList<Person>> al = new ArrayList<>();
* 23.HashSet
 * 添加重复时add返回false
 * 可以用增强for循环遍历
 * 存储自定义对象保证元素唯一性 要重写hashCode()(alt+shift+s自动生成)和equals()方法
* 24.LinkedHashSet底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的的集合对象

猜你喜欢

转载自www.cnblogs.com/yaopeiyun/p/9557097.html
今日推荐