List集合总结

jdk 1.5后collection 不再是集合的顶层接口了,而是Iterable  实现这个接口是为了允许集合对象成为增强for 的目标
集合是专业存储对象的容器 ,注意集合仅仅存储的是对象的引用,而非对象本身。
List 继承继承了Collection 接口.
   List 是Collection 的子类. List 更强的,具备更多个方法..
list提供了一些特殊方法实现自己的特有功能,都依赖于角标
集合的特点 元素存储有序,在list集合中的元素都有角标,且可以存储重复值
 

     void add(int index, Object element)
     boolean addAll(int index, Collection c)
 

     remove(int index) 
 
查   get(int index) 
     int indexOf(Object o)
     int lastIndexOf(Object o) 
 
改 Object set(int index, Object element)
     subList(int fromIndex, int toIndex) 
 
List实现类
特点: 底层是数组实现, 数组是一块连续的内存,通过角标可以实现快速的定位,查找很快.
    但是增加和删除元素时,很慢, 元素的移动(增加和删除),和数组的扩容(增加元素,数组空间不足)
    底层的数组的扩容,是以1.5倍扩容的...
    总结: 查找快,增删慢. 
    在实际开发中,最为常见的一个集合... 
总结: 查找快,增删慢.
ArrayList 集合:
   
contains方法底层使用元素的equals方法
    以使用contains 检测集合中是否包含指定的元素.
    但是如果元素是自定义对象话, contains 底层使用的元素的equals 方法进行检测的. 如果自定义对象没有重写equals, contains 方法不能正常工作了.  
List 实现类
双向链表结构的集合
特点:  双向链表实现. 集合的每增加一个元素,创建出一个节点(Node)对象保存一个元素.
           上一个节点会记录下一个节点的引用. 由于双向链表,下一个节点也会记录上一个节点的.
       节点和节点的内存地址不连续,
查找很慢,增删快了..
注意: LinkedList 和数组没有任何关系. 
提供了一些特有的功能(由于双向链表的列表,操作集合的头尾就很方便)
     addFirst   addLast
     getFirst   getLast
     removeFirst  removeLast
      
 
栈:stack                     队列 queue
 先进后出,后进先出...        先进先出.
 压栈                        排队 : offer
 push()                      出队 :poll
 弹栈.
 pop()
 
Vector
 缺陷:
   JDK1.0 出现的.
     具备自己特有方法,但是方法名太长.
     底层也是数组实现, 数组在扩容是100% 扩容, 消耗内存..
     该集合是同步(集合的方法都是同步方法),在单线程在操作新低.
 解决:
  JDK1.2 Java 设计了集合体系. Collection. 并设计出了ArrayList .
  Vector 就被ArrayList 替代了.
  ArrayList 优点:
   方法名短.
   虽然也是数组实现,但是扩容不再是100%
   集合被设计为非同步的. 不再使用同步方法了. -> 提高性能.
  注意: 如果ArrayList 遇到了多线程安全问题:
   可以使用Collections.synchronizedList(List list); 将不同步的ArrayList 转换为同步的集合.
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值