《Java编程思想-持有对象》

来源:互联网 发布:python zip函数 编辑:程序博客网 时间:2024/05/20 11:35

-List集合

  • ArrayList
    • ArrayList擅于随机访问元素,但是在插入和删除元素时效率低。
  • LinkedList
    • LinkedList在删除和插入元素时效率较高,有效率较高的顺序访问但是在随机访问上效率较低。

两个list集合,类似于数据结构中的顺序表和链表,在查找和插入删除上优势互补

  • contain()方法可以确定某个对象是否在列表中。
  • containAll()方法可以确定一段List集合是否在当前集合中,判断与集合的顺序无关。
  • remove()方法移除一个对象,需要该对象的引用。
  • indexOf()方法获取该对象的索引编号,获取集合中存在对象的编号
//假设list集合有[Cat(),Mouse(),Dog()]三个对象Animal animal = list.get(2);list.indexOf(animal);//可以获得到索引为2Animal dog = new Dog();list.indexOf(dog);//索引值为-1(没有结果)//同样的remove的结果也会是false。//当确定一个元素是否属于集合list或者要移除一个元素时都会用到equals()方法,//在list集合中Java重写了equals()方法,equals方法并不关心List的具体实现类,//只要是实现了List接口,并且所有元素相等、长度也相等的话就表明两个List是相等的。
  • retainAll()是一个去交集的操作,它的行为同样依赖于equals方法。
  • set()可以替换集合中的元素,需要索引值和元素
  • toArray()可以将任意一个collection集合转化成一个数组,无参数的toArray()通过数组拷贝的方法public Object[] toArray() {
    Object[] result = new Object[size];
    System.arraycopy(elementData, 0, result, 0, size);
    return result; }
    ,方法返回一个object[]数组,如果传入特定类型的数据则产生指定类型的数据//有以下方式
    int[] array1=(int[])list.toArray(new int[0]);//指定空数组
    int[] array2=list.toArray(new int[list.size])