Java学习---容器List学习

容器List学习

List分类

  • ArrayList:底层采用数组,便于查找
  • LinkedList:底层采用双向链表,便于插入
  • Vector:底层也是采用数组,但是与ArrayList最大区别就是Vector的方法加了synchronized,是线程安全的(至于线程安全我们以后再了解)
    C498C636E362202B07781CFA4CA79B16.png

ArrayList相关方法

public class ArraylistLearing {
 public static void main(String [] args)
 {
	 List<Integer> a=new ArrayList<Integer>(5);    //初始化ArrayList,设置长度,但其实无所谓,因为其可以动态增加
	 System.out.print(a.size()+" ");       //这个时候其实输出size为0
	 Integer [] num= {1,2,3,4};
	 a.add(1);                    //add方法
	 a.add(0,66);                 //可以在指定位置添加      
	 a.addAll(Arrays.asList(num));   //addAll可以添加一连串的数据
	 a.addAll(1,Arrays.asList(num));  //指定位置添加
	 System.out.print(a.size()+" ");     //这个时候输出size为6
	 System.out.print(a+" ");
	 System.out.print(a.get(2));      //a.get()方法得到指定位置的数据
	 a.set(1, 100);                     //a.set()修改指定位置的数据
	 a.remove(0);                 //a.remove()删除指定位置的元素
	 System.out.print(a+" ");
	 
	 
 }
}

注意ArrayList中的细节:
-ArrayList是基于动态数组实现的,在增删时候,需要数组的拷贝复制。

-ArrayList的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为原来的1.5倍(所以我们设置初始容量就是避免多次扩容,会导致效率降低)

-删除元素时不会减少容量,若希望减少容量则调用trimToSize()

-它不是线程安全的。它能存放null值。

###Vector的相关知识

  • 对于Vector,其基本方法与ArrayList类似,主要的一个不同就是,ArrayList是线程不安全的,而对于Vector是线程安全的
    如果想要ArrayList实现同步,可以使用Collections的方法:List list=Collections.synchronizedList(new ArrayList(…));,就可以实现同步了
  • ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍

LinkedList详解

LinkedList底层采用了双向链表,但其中还添加了一些可以用作栈或队列的方法。

LinkedList相关方法:

pets.getFirst() 获取列表中第一个元素
pets.element() 与上面一样
pets.peek()与上面一样
以上三个都可以获得第一列表中第一个元素
pets.remove()删去第一个元素 **注意**:并且返回这个元素
pets.removeFirst()与上面一样
pets.poll()实现栈的弹出 和上面功能一样
pets.pop()也是实现与上面一样的功能
当我们想要上去最后一个元素时,我们可以使用pets.removeLast()
pets.addFirst()是向第一个位置前加元素
而对于pets.add(),pets.addLast(),pets.offer()都是往最后添加元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值