05集合、泛型、迭代

05集合、泛型、迭代-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.泛型类概述
    • 把泛型定义在类上
    • 定义格式 public class 类名<泛型类型1,…>
  • 13.泛型方法 public <泛型类型> 返回类型 方法名(泛型类型 变量名)
    • 非静态方法最好与类的泛型一致,不一致要在方法上声明
    • 静态方法必须声明自己的泛型
  • 14.泛型接口
    • public interface 接口名<泛型类型>
    • 实现:
      • class Demo implements Inter //推荐这种
      • class Demo implements Inter
  • 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> al = new ArrayList<>();
  • 23.HashSet
    • 添加重复时add返回false
    • 可以用增强for循环遍历
    • 存储自定义对象保证元素唯一性 要重写hashCode()(alt+shift+s自动生成)和equals()方法
  • 24.LinkedHashSet底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的的集合对象

 

posted @ 2018-08-29 21:44  菜白小系瓦  阅读(108)  评论(0编辑  收藏  举报