day18 arraylist

1.arraylist只存对象类型
2.collection顶层接口,一路是list(arraylist,linkedlist),一是set(hashset,linkedhashset)
3.list有序可重复元素,set无序不可有重复元素
4.仅有三种长度方法·:array.length(),Stirng.length(),集合.size()
5.toarray()集和转成数组,集合是可变数组,数组存入数据就不可变了
6.remove删除指定元素,如有相同元素就删除遇到的第一个

7.迭代器iterator

  • 迭代器本身就是遍历:判断有没有(hasnext)下一位,有就返回true,之后将指针置于下一位并将元素取出来(next)
  • iterator it=new ArrayList().iterator()拿到接口实现类
while (it.hasNext()) {//hasnext判断下一位有没有,默认是在-1位
        it.next();
//next一是把数组元素返出,一是将指针指到下一位hasnext本身不会移动指针
}
  • 迭代器仅能使用一次
  • for比while节省内存但选while代码简洁
  • collection若不写类型就object什么都可以存
  • jdk1.5之后增强for
arrlist arr=new arraylist();
for (Integer a : arr) {
}
a被数组元素赋值但本身和数组本身无关
增强for不能操作数组无索引

8.泛型,克服安全问题(强转出错)指定集合存储数据类型

  • java中泛型是伪泛型,仅在编译中存在,在编译后的运行class文件没有泛型存在
  • public class Arrlist e指element变量,带泛型的类
  • add是带泛型的方法
  • E可以后期指定也可以直接指定

9.文件通配符.指任何文件

  • 泛型通配符
public void work(?){}
public void work(? extends Person){}//父类是person,子类不确定,可传本类也可传子类,泛型上限限定
public void work(?super Person){}子类是Person,父类不确定,传父类传本身,泛型下线限定
限定之后可以保证父类方法调用不出错

你可能感兴趣的:(day18 arraylist)