集合Collection之List

本文深入介绍了Java集合框架的基础概念及核心组件,包括List、Set、Map等接口的不同实现方式及其特性。对比了ArrayList与LinkedList在不同操作场景下的优劣,并探讨了栈桥与队列的基本原理。
集合概念:动态存储多个对象


数组:基本,引用


Collection:
  子接口:
List
ArrayList,LinkedList
Set
HashSet,TreeSet




Map
HashMap,TreeMap


三种集合存储对象的特点:如果想用子类特有的,就用子接口实例化
List:有序可重复
Set:不可重复
Map:存储键值对,键不能重复




ArrayList:
Collection c=new ArratList();
List list=new ArrayList();
add(E e):添加元素和返回boolean类型。


//输出数组
Object o={....};
syso(Arrays.toString(o));


List:


get(index),返回集合中指定位置的元素
indexOf,返回对象第一次出现的索引,不存在返回-1
remove(index),移除指定位置的元素,返回值是移除的对象
set(index,Object),替换指定位置的对象,返回值为被替换的对象
subList(from,to),集合的截取,[from,to)




遍历List集合
增强for循环,因为集合中有各种类型的数据,所以只能用Object
for(Object obj:l1)




泛型:规定集合中存储对象的类型


迭代器使用方法:
ArrayList a1 = new ArrayList();
Iterator it = a1.iterator();
//a1.iterator()   获取ArrayList中的迭代器,返回Iterator类


错误方法:
list.iterator().next()//每次使用都调用一个新的迭代器,不可用,从头开始迭代


注意:一个迭代器遍历只能有一次。指针指到末尾就不会回来了


迭代器的remove方法,最好用操作集合的方法去删除
Iterator it2=a1.iterator();
while(it2.hasNext()){
it2.next();
it2.remove();//next方法之后调用remove方法。删除next获得的对象
}


ArrayList,底层由数组实现,存储对象
优点:集合中的对象都有索引值,并且存储是连续的,变量是效率较高
缺点:集合在进行插入或删除操作时,效率较低,需要做大量的交换


LinkedList,底层是双向链表实现
优点:集合在进行插入或删除操作时效率较高,只需要改变前驱后继即可


栈桥:stack,后进先出,(Last In First Out,LIfo)

队列,queue,先进先出,(First In First Out)



附:

java.util 
类 AbstractList<E>


方法摘要
 boolean add(E e) 
          将指定的元素添加到此列表的尾部(可选操作)。
 
 void add(int index, E element) 
          在列表的指定位置插入指定元素(可选操作)。
 
 boolean addAll(int index, Collection<? extends E> c) 
         将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。
 
 void clear() 
          从此列表中移除所有元素(可选操作)。 


 boolean equals(Object o) 
          将指定的对象与此列表进行相等性比较。 


abstract  E get(int index) 
          返回列表中指定位置的元素。 


 int hashCode() 
          返回此列表的哈希码值。 


 int indexOf(Object o) 
  返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1
 
 Iterator<E> iterator() 
      返回以恰当顺序在此列表的元素上进行迭代的迭代器。 


 int lastIndexOf(Object o) 
      返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
 
 ListIterator<E> listIterator() 
          返回此列表元素的列表迭代器(按适当顺序)。 


 ListIterator<E> listIterator(int index) 
          返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。
 
 E remove(int index) 
          移除列表中指定位置的元素(可选操作)。
 
protected  void removeRange(int fromIndex, int toIndex) 
          从此列表中移除索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。 


 E set(int index, E element) 
          用指定元素替换列表中指定位置的元素(可选操作)。 


 List<E> subList(int fromIndex, int toIndex) 
      返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 


java.util 
接口 Iterator<E>
//此次用的很多,要多多练习迭代器的使用

 boolean hasNext() 
          如果仍有元素可以迭代,则返回 true。 
 E next() 
          返回迭代的下一个元素。 
 void remove() 
          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值