集合系列日记(17.5.9)

ArrayList是一个数组队列,相当于是一个动态的数组,可以实现增删查改和遍历的功能(继承于AbstractList类),可以随机访问(实现了RandmoAccess接口),而且可以根据元素的序列号,快速去获取对象。

api接口(摘自http://www.cnblogs.com/skywang12345/p/3308556.html)

// Collection中定义的API
boolean             add(E object)
boolean             addAll(Collection<? extends E> collection)
void                clear()
boolean             contains(Object object)
boolean             containsAll(Collection<?> collection)
boolean             equals(Object object)
int                 hashCode()
boolean             isEmpty()
Iterator<E>         iterator()
boolean             remove(Object object)
boolean             removeAll(Collection<?> collection)
boolean             retainAll(Collection<?> collection)
int                 size()
<T> T[]             toArray(T[] array)
Object[]            toArray()
// AbstractCollection中定义的API
void                add(int location, E object)
boolean             addAll(int location, Collection<? extends E> collection)
E                   get(int location)
int                 indexOf(Object object)
int                 lastIndexOf(Object object)
ListIterator<E>     listIterator(int location)
ListIterator<E>     listIterator()
E                   remove(int location)
E                   set(int location, E object)
List<E>             subList(int start, int end)
// ArrayList新增的API
Object               clone()
void                 ensureCapacity(int minimumCapacity)
void                 trimToSize()
void                 removeRange(int fromIndex, int toIndex)

ArrayList支持3种遍历方式,通过迭代器遍历;随机访问,通过索引值去访问;for循环遍历

import java.util.*;
import java.util.concurrent.*;
public class Test {
    public static void main(String[]args){
        List list=new ArrayList();
        for(int i=0;i<99999;i++){
            list.add(i);
        }
        iteratorThroughRandomAccess(list);
        iteratorThroughFor2(list);
        iteratorThroughIterator(list);
    }
    private static void isRandomAccessSupported(List list){
        if(list instanceof RandomAccess){
            System.out.println("RandomAccess implemented!");
        }else{
            System.out.println("RandomAccess not implemented!");
        }
    }
    //随机进行访问
    private static void iteratorThroughRandomAccess(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(int i=0;i<list.size();i++){
            list.get(i);
        }
        endTime=System.currentTimeMillis();
        long interval=endTime-startTime;
        System.out.println(interval+"ms");
    }
    //for循环进行遍历
    private static void iteratorThroughFor2(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(Object obj:list);
        endTime=System.currentTimeMillis();
        long interval=endTime-startTime;
        System.out.println(interval+"ms");
    }
    //通过迭代器进行访问
    private static void iteratorThroughIterator(List list){
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        for(Iterator iter=list.iterator();iter.hasNext();){
            iter.next();
        }
        endTime=System.currentTimeMillis();
        long interval=endTime-startTime;
        System.out.println(interval+"ms");
    }
}

由此得出随机访问效率最高。

import java.util.*;
public class Test {
    public static void main(String[]args){
        List list=new ArrayList();
        //添加元素
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        //在指定位置添加元素
        list.add(0, "5");
        //输出第一个元素
        System.out.println("first"+list.get(0));
        //remove element
        System.out.println("ArrayList‘size"+list.size());
        //判断是否有元素4
        System.out.println("contains 4"+list.contains("4"));
        for(Iterator iter=list.iterator();iter.hasNext();)
            System.out.println("next is "+iter.next());
        //转化
        String[]st=(String[])list.toArray(new String[0]);
        for(String str:st)
            System.out.println("str:"+st);
        //清除
        list.clear();
        //判断是否为空
        System.out.println(list.isEmpty());

    }
}

常见的功能!

时间: 2024-10-20 12:17:46

集合系列日记(17.5.9)的相关文章

集合系列日记(17.5.8)

list和set继承于collection的两个分支,list是有序的队列,里面是可以有重复的元素,而set像是数学中集合的概念,是没有重复的元素. 如图所示,抽象类abstractcollection实现了collection的大部分功能,而抽象类abstractlist和abstractset继承于abstractcollection,接口list和set分别实现了这两个类.collection接口中有一个方法lterator可以实现对元素的遍历. 1)collection是一个接口,是高度

集合系列日记(17.5.13)

Vector Vector继承于AbstractList,是一个队列,支持相关的添加.删除.修改.遍历等功能,我们可以通过元素的序号来获取元素对象,从而实现List的快速访问,并且Vector是线程安全的. Vector共有4个函数 ?Vector()  //默认的构造函数 ?Vector(int capacity)  //capacity是Vector默认的容量大小,由于每次增加时,会导致Vector的容量增加一倍 ?Vector(int capacity,int capacityIncrem

集合系列日记(17.5.10)

fail-fast fail-fast是collection的一种错误机制,当多个线程对同一个容器进行操作的时候就会产生fail-fast事件,当有两个线程a和b,当线程a对容器进行遍历时,线程b改变了容器的东西,就会进行报错. public class Test { private static List<String> list=new ArrayList<String>(); public static void main(String[]args){ ThreadOne t

集合系列日记(17.5.5)

Stack是栈(先进后出) Stack也是通过数组来实现的,它只有一个构造函数Stack() boolean empty() synchronized E peek() synchronized E pop() E push(E object) synchronized int search(Object o) Stack()常见的功能↑ 待补充....先睡觉了

集合系列日记(17.5.20)

补充上一篇当中HashMap中的对外接口 1.clear():清空HashMap,它将所有的元素设为null(无效值)来实现 public void clear(){ modCount++; Entry[] tab=table; for(int i=0;i<tab.length;i++) tab[i]=null; size=0; } 2.containsKey():containsKey()的作用是判断HashMap是否包含key 3.containsValue():判断HashMap是否包含&qu

Java 集合系列 17 TreeSet

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSet数据结构第3部分 TreeSet源码解析(基于JDK1.6.0_45)第4部分 TreeSet遍历方式第5部分 TreeSet示例 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311268 第1部

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis