一、List接口
List 接口继承了Collection接口,通常将 实现List接口的类成为List集合。
List集合的特点(1)允许出现重复的元素;
(2)储存在集合中的元素是有序的;
(3)集合中元素取出的顺序和存入的顺序一致。
List接口的实现类有ArrayList类和 LinkedList类。
1)ArrayList集合
ArrayList集合类实现List接口。ArrayList内部封装了一个可变长度的数组对象,当储存的元素超过了集合的长度时,ArrayList就在内存中分配一个更大的数组来储存这些元素,因此可以将ArrayList看作一个长度可变的数组。
ArrayList集合的优点:使用索引访问数据较快
ArrayList集合的缺点:不适用于大量添加或删除元素的操作。(因为ArrayList集合的底层是由数组来保存数据的,所增加或删除元素时程序就会重新创建数组来保存。如果程序一直创建新的数组,就会导致程序的性能降低)
ArrayList集合中的元素的索引是从0开始的。通俗讲就是集合的第一个元素的索引为0。
获取ArrayList集合中元素有两种方法:
public class ArrayList{ public static void main(String [] args){ ArrayList c = new ArrayList(); c.add("a"); c.add("b"); c.add("c"); } }
(1)使用迭代器Iterator遍历集合中的元素并打印出来;
//使用迭代器遍历集合中的元素 Iterator<String> it = c.iterator(); //it.hasNext()判断游标右边是否有元素,有为True while(it.hasNext()){ //获取集合中的元素(返回迭代中的下一个元素。) String s = (String) it.next(); System.out.println(s); }
(2)使用for循环或者foreach循环遍历集合中的元素。
for循环:
for(int i = 0;i<ls.size();i++){ //get(i)获取i索引处的集合对象 System.out.println(ls.get(i)); }
foreach循环(加强的for循环):
for(Object o:ls){ System.out.println(o); }
2)LinkedList集合
LnkedList类实现了List接口,它提供了一个链接列表数据结构,链表中的每一个元素都使用 引用 的方式记录了它的前一个元素和后一个元素。
当我们插入或者删除元素时,程序只要修改元素之间的引用关系就可以。
LinkedList集合的优点:(1)提高删除和修改元素的效率;
(2)对元素增加和删除针对性的操作。
LinkedList集合的缺点:随机访问集合中的元素,LinkedList比ArrayList慢。
获取LinkedList集合中元素和获取ArrayList集合中元素一样都有相同的两种方法,可以借鉴下获取ArrayList集合中元素方法。