集合框架

完整教程:how2j

备忘

  • ArrayList存放对象 容器的容量”capacity”会随着对象的增加,自动增长 只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题。

    1
    2
    3
    4
    //容器类ArrayList,用于存放对象
    ArrayList heros = new ArrayList();//创建容器类对象
    heros.add( new Hero("盖伦"));//添加新英雄
    System.out.println(heros.size());//容器类大小
  • List :ArrayList实现了接口List常见的写法会把引用声明为接口List类型注意:是java.util.List,而不是java.awt.List 因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    List heros = new ArrayList();//创建容器类对象
    heros.add( new Hero("盖伦"));//添加新英雄
    System.out.println(heros.size());//容器类大小
    ```


    - 泛型 Generic:不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类
    ```java
    //声明容器的时候,就指定了这种容器,只能放Hero,放其他的就会出错
    List<Hero> genericheros = new ArrayList<Hero>();
    genericheros.add(new Hero("盖伦"));
    //如果不是Hero类型,根本就放不进去
    //genericheros.add(new Item("冰杖"));

    //除此之外,还能存放Hero的子类
    genericheros.add(new APHero());

    //并且在取出数据的时候,不需要再进行转型了,因为里面肯定是放的Hero或者其子类
    Hero h = genericheros.get(0);
  • 泛型的简写

    List<Hero> genericheros = new ArrayList<Hero>();
    List<Hero> genericheros2 = new ArrayList<>();
    
  • 迭代器遍历 havaNext

    Iterator<Hero> it= heros.iterator();
          //从最开始的位置判断"下一个"位置是否有数据
          //如果有就通过next取出来,并且把指针向下移动
          //直达"下一个"位置没有数据
          while(it.hasNext()){
              Hero h = it.next();
              System.out.println(h);
          }