Java中ArrayList和LinkedList集合_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中ArrayList和LinkedList集合

Java中ArrayList和LinkedList集合

 2018/10/10 15:24:52  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.ArrayList集合ArrayList集合add()方法,接收的是对象,不能放置原生数据类型,可以在指定的索引插入元素get()方法isEmpty()方法remove()方法,将删除的值返回,如果需要可以获取到clear()方法,清空集合indexOf()方法,查询索引值toArray()方法,接收数组时要强制转换成对应的类型,不能将Object[]转换为Integer[]。所以要在遍历数组的时候将Object类型转换成Ingeter类型。1.ArrayList底层采用数组实现
  • 标签:list Java
1. ArrayList集合
class="java" name="code">
ArrayList集合
    add()方法,接收的是对象,不能放置原生数据类型,可以在指定的索引插入元素
    get()方法
    isEmpty()方法
    remove()方法,将删除的值返回,如果需要可以获取到
    clear()方法,清空集合
    indexOf()方法,查询索引值
    toArray()方法,接收数组时要强制转换成对应的类型,不能将Object[]转换为Integer[]。所以要在遍历数组的时候将Object类型转换成Ingeter类型。
    
1. ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组。
2. 如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的 1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
3. 集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中。
4. 集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。

import java.util.ArrayList;
public class ArrayListTest2{
    public static void main(String[] args){
        ArrayList list = new ArrayList();
        list.add("hello");
        list.add(new Integer(2));
        String str = (String)list.get(0);
        Integer in = (Integer)list.get(1);
        System.out.println(str);
        System.out.println(in.intValue());
    }
}
运行结果:
hello
2


2. LinkedList集合
LinkedList集合
    add()方法
    addLast()方法
    addFirst()方法
    addLast()方法
    remove()方法
    set()方法
    
import java.util.LinkedList;
public class LinkedListTest {
    public static void main(String[] args){
        LinkedList list = new LinkedList();
        list.add("F");
        list.add("B");
        list.add("D");
        list.add("E");
        list.add("C");
        list.addLast("Z");
        list.addFirst("A");
        list.add(1, "A2");
        System.out.println("最初的集合:" + list);
        
        list.remove("F");
        list.remove(2);
        System.out.println("变化之后的集合:" + list);
        
        Object value = list.get(2);
        list.set(2, (String)value + "changed");
        System.out.println("最后的集合:" + list);        
    }
}
运行结果:
最初的集合:[A, A2, F, B, D, E, C, Z]
变化之后的集合:[A, A2, D, E, C, Z]
最后的集合:[A, A2, Dchanged, E, C, Z]


3. ArrayList和LinkedList比较
1. ArrayList是实现了基于动态数组的数据结构,LinkedList是基于双向链表结构。

2. 对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。

3. 对于新增和caozuo.html" target="_blank">删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。

4. 对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。
   对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;
   对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。

5. 在ArrayList集合中添加或者删除一个元素时,当前的列表所所有的元素都会被移动。而LinkedList集合中添加或者删除一个元素的开销是固定的。

6. LinkedList集合不支持高效的随机随机访问(RandomAccess),因为可能产生二次项的行为。

7. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
上一篇: java\数据库根据int类型转化为时间 下一篇: 没有下一篇了!
发表评论
用户名: 匿名