Collection集合体系、迭代器、增强for、泛型

java.util.Collection 集合层次的根接口
    1,ArrayList implements List
       List extends Collection
    2,LinkedList implements List
       List extends Collection
    3,HashSet implements Set
       Set extends Collection
    4,LinkHashSet implements Set
       Set extends Collection

常用方法
    boolean add(E e) 添加元素
    void clear() 清空元素
    boolean contains(Object o) 判断是否包含指定元素
    boolean remove(Object o) 删除指定元素
    int size() 获取长度
    Object[] toArray() 将集合转换为数组
Collection的方法
    Iterator<E> iterator() 获取集合对象专属的迭代器<while方法>
      此方法是一个抽象方法 ,任何的Collection接口的实现类,都会重写此方法
      该方法的返回值类型是一个接口,子类重写必定返回Iterator接口的实现类对象
      调用此方法 返回的就是Iterator的实现类对象
Iterator接口
    boolean hasNext() 判断是否有元素 只要不把元素获取完 一直都是true
      E next() 获取元素 调用一次就获取一个
      易出现并发修改异常
        java.util.ConcurrentModificationException
    当迭代器迭代集合时,集合修改了长度 这时抛此异常

    JDK1.5后出现
      增强for循环
      作用:遍历数组或集合
      格式
      for(集合或数据存储元素的数据类型 变量名: 要遍历的集合或数组){
      }

泛型接口
      泛型类
      创建对象时确定泛型的数据类型<在创建对象的时候就会实例化泛型>

泛型方法
      修饰符 <接收数据类型的变量名> 返回值类型 方法名(参数){
      }
      eg:public static<T> void show(ArrayList<T> list){
        for(T i:list){
              System.out.println(i);
            }
      }

泛型集合方法(参数为集合类型的泛型)
    调用方法时确定泛型的数据类型

    public interface 接口名<接收数据类型的变量>
      1.定义实现类时,就确定下来泛型的数据类型
      2.定义实现类时,不确定泛型的数据类型,创建实现类对象时,确定泛型的数据类型
    泛型的接口类
      public interface Fly<E>{

      public abstract void method(E e);
      }
    定义实现类时,就确定下来泛型的数据类型
      public class Bird implements Fly<String>{
        @Override
        public void method(String e) {
        }
      }
    使用泛型的好处
      1.将运行时的错误提前到编译时
      2.避免了强制类型转换
泛型的通配符 ?

泛型的限定
    上限限定 ? extends Animal 只能传Animal及其子类
    下限限定 ? super Animal 只能传 Animal及父类
    public class Demo01 {

    public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    ArrayList<Integer> list2 = new ArrayList<Integer>();
    show(list);
    show(list2);
    }
    一个方法可以遍历这两个集合
    public static void show(ArrayList<?> list){
    for(Object obj : list){
      System.out.println(obj);
      }
      }
  }

猜你喜欢

转载自www.cnblogs.com/JunQiang-Ma/p/9959540.html
今日推荐