一:List接口介绍
java.util.List接口继承Collection接口,是单列集合的一个重要分支,习惯上将实现了List接口的对象称为List集合,List集合允许出现重复的元素,所有的元素是以一种线下方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。List集合一个特点:元素有序,即元素的存入顺序和取出顺序一致。
List接口的特点:
1.它是一个元素存取有序的集合。例如,存元素的顺序是11,22,33.那么集合中,元素的存储就是按照11,22,33的顺序完成的。
2:它是一个带有索引的集合,通过索引就可以精确操作集合中的元素(与数组的索引一个道理).
3.集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
tips:List接口的子类java.util.ArrayList类,此类的方法都是来自List定义。
package cn.itcast.day10.day6;
import com.sun.org.apache.xpath.internal.SourceTree;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
java.util.List接口 extends Collection接口
List接口的特点:
1:有序的集合:存储元素和取出元素的顺序是一致的(存储123,取出123)
2:有索引,包含了一些带索引的方法
3:允许存储重复的元素。
List接口中带索引的方法(特有)
public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。
public E get(int index);返回集合中指定的元素
public E remove(int index);移除列表中指定位置的元素,返回被移除的元素。
public E set(int index,E element);用指定元素替换集合中指定位置的元素,返回更新前的元素。
//注意:操作索引的时候,一定防止索引越界异常。
*/
public class Demo01List {
public static void main(String[] args) {
//创建一个List集合对象,多态
List<String> list =new ArrayList<>();
//使用add方法往集合中添加元素。
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
System.out.println(list);//[a, b, c, d, a]不是地址,说明重写toString
// public void add(int index,E element):将指定的元素,添加到该集合中的指定位置上。
//在c和d之间添加one
list.add(3,"one");//[a, b, c, one, d, a]
System.out.println(list);
//public E remove(int index);移除列表中指定位置的元素,返回被移除的元素。
//移除元素
String removeE =list.remove(2);
System.out.println("被移除的元素"+removeE);
System.out.println(list);
//public E set(int index,E element);用指定元素替换集合中指定位置的元素,返回更新前的元素。
//把最后一个a替换成4
String setE=list.set(4,"4");
System.out.println("被替换的元素"+setE);
System.out.println(list);
//List集合遍历有3种方式
for (int i= 0;i<list.size();i++){
String s=list.get(i);
System.out.println(s);
}
System.out.println("====================");
//使用迭代器
Iterator<String> iterator =list.iterator();
while (iterator.hasNext()){
String s= iterator.next();
System.out.println(s);
}
System.out.println("===============");
//使用增强for
for(String s:list){
System.out.println(s);
}
}
}
二:List的子类-----ArrayList集合
java.util.ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快。
三:List的子类-----LinkedList集合
java.util.LinkedList集合数据存储的结构是双向链表结构。方便元素的添加,删除的集合。
package cn.itcast.day10.day6;
import java.util.LinkedList;
/*
java.util.LinkList集合 implements List接口
特点:
1:底层是一个链表结构:查询慢,增删快。
2:里面包含了大量操作首尾元素的方法。
注意:使用LinkedList集合特有的方法,不能使用多态。
public void addFirst(E e);//将指定的元素插入到此列表的开头。
public void addLast(E e);将指定元素添加到此列表的结尾。
public E getFirst();返回列表的第一个元素。
public E getLast():返回列表的最后一个元素。
public E removeFirst();移除并返回此列表的第一个元素。
public E removeLast();移除并返回列表的最后一个元素。
public E Pop();从列表所表示的堆栈处弹出一个元素。
public boolean isEmpty();//如果列表不包含元素,则返回true
*/
public class Demo02LinkedList {
public static void main(String[] args) {
show3();
}
/*
* public E removeFirst();移除并返回此列表的第一个元素。
public E removeLast();移除并返回列表的最后一个元素。
public E Pop();从列表所表示的堆栈处弹出一个元素。
* */
private static void show3(){
//创建LinkedList集合对象。
LinkedList<String> linked =new LinkedList<>();
//使用add方法往集合中添加元素。
linked.add("a");
linked.add("b");
linked.add("c");
String first =linked.removeFirst();
System.out.println("被移除的第一个元素"+first);
String last =linked.removeLast();
System.out.println("被移除的最后一个元素"+last);
System.out.println(linked);
}
/*
public E getFirst();返回列表的第一个元素。
public E getLast():返回列表的最后一个元素。
*/
private static void show2(){
//创建LinkedList集合对象。
LinkedList<String> linked =new LinkedList<>();
//使用add方法往集合中添加元素。
linked.add("a");
linked.add("b");
linked.add("c");
if (!linked.isEmpty()){
linked.clear();//清空集合中的元素,在获取集合中的元素抛出NoSuchElementException
String first =linked.getFirst();
System.out.println(first);
String last =linked.getLast();
System.out.println(last);
}
}
/*
* public void addFirst(E e);//将指定的元素插入到此列表的开头。
public void addLast(E e);将指定元素添加到此列表的结尾。
* */
private static void show01(){
//创建LinkedList集合对象。
LinkedList<String> linked =new LinkedList<>();
//使用add方法往集合中添加元素。
linked.add("a");
linked.add("b");
linked.add("c");
System.out.println(linked);//[a, b, c]
// public void addFirst(E e);//将指定的元素插入到此列表的开头。
linked.push("www");
System.out.println(linked);//[www, a, b, c]
// public void addLast(E e);将指定元素添加到此列表的结尾。
linked.addLast("com");
System.out.println(linked);//[www, a, b, c, com]
}
}
四:List的子类-----Vector集合
与collection实现不同的,vector集合是同步的。