一、List接口 java.util.List接口
extends Collection接口
特点:
有序 的集合(存储和取出元素的顺序一致)
有索引 ,包括了一些有索引的方法
存储重复 的元素
实现类 :Arraylist (底层采用数组结构,查询快,增删慢),LinkedList (底层采用链表结构,查询慢,增删快),Vector (底层采用数组结构,查询快,增删慢)
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import java.util.*; public class Main extends Object{ public static void main(String[] args) { //创建一个List集合对象(多态) List<String> list=new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("a"); System.out.println(list); System.out.println("!!!!!!!!!!!!!!!!!!!"); //使用增强for循环 for(String i:list) { System.out.println(i); } System.out.println("!!!!!!!!!!!!!!!!!!!"); //使用迭代器 Iterator<String> lists=set.iterator(); while(sets.hasNext()) { String a=lists.next(); System.out.println(a); } } }
代码结果如下: [a, b, c, d, a] (重复的a可以打印出来!!!) !!!!!!!!!!!!!!!!!!! a b c d a !!!!!!!!!!!!!!!!!!! a b c d a
特定(索引)的方法:
public void add(int index,E element);
将指定元素添加 到集合的指定位置
public E get(int index);
返回 指定位置元素
public E remove(int index);
移除 指定位置元素(返回被移除的元素) 需要赋给一个变量
public E set(int index,E element);
替换 指定位置元素(返回之前的元素) 需要赋给一个变量
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import java.util.*; public class Main extends Object{ public static void main(String[] args) { //创建一个List集合对象(多态) List<String> list=new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("a"); System.out.println(list); //[a, b, c, d, a] //public void add(int index,E element); 添加 list.add(3,"woaini"); //形参为给第几个位置添加什么字符串 System.out.println(list); //[a, b, c, woaini, d, a] //public E remove(int index); 移除(返回被移除的元素) String yuanlai1=list.remove(2); //形参是int型 System.out.println("被移除的是:"+yuanlai1); //输出字符串必须要用"+"符号 System.out.println(list); //[a, b, woaini, d, a] //public E set(int index,E element); 替换(返回之前的元素) String yuanlai2=list.set(1, "aa"); System.out.println("被替换的是:"+yuanlai2); //输出字符串必须要用"+"符号 System.out.println(list); //[a, aa, woaini, d, a] //public E get(int index); 返回 String zhiding=list.get(4); //5就会导致"java.lang.IndexOutOfBoundsException"异常 System.out.println("指定的是:"+zhiding); //指定的是:a } }
代码结果如下: [a, b, c, d, a] [a, b, c, woaini, d, a] 被移除的是:c [a, b, woaini, d, a] 被替换的是:b [a, aa, woaini, d, a] 指定的是:a
二、ArrayList集合(实现类) 它的方法和List定义的基本一致(基本被用于接口的实现类)!
三、LinkedList集合 LinkedList集合的底层结构是链表结构 ,方便元素的增、删、添、首尾操作 。
方法:
除了和List接口中的方法(继承 )+特有的方法;
特有(首尾操作)的方法:
第一组: void addFirst(E e);
void addLast(E e);
第二组(返回移除的元素): E removeFirst();
E removeLast();
第三组(返回特定的元素): E getFirst();
E getLast();
第四组: E pop();
//弹出,删除集合中的第一个元素 void push(E e);
//推入,往集合中增加一个元素
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import java.util.*; public class Main extends Object{ public static void main(String[] args) { LinkedList<String> list=new LinkedList<String>(); //使用父类的添加方法 list.add("123"); list.add("WWW"); list.add("12SW"); System.out.println(list); //[123, WWW, 12SW] System.out.println("!!!!!!!!!!!"); //使用LinkedList的特定方法添加 list.addFirst("ASD"); list.addFirst("AHHAHAHA"); //[AHHAHAHA, ASD, 123, WWW, 12SW] 会不断地当第一个!! System.out.println(list); //[AHHAHAHA, ASD, 123, WWW, 12SW] System.out.println("!!!!!!!!!!!"); //删除元素 String shanchu=list.removeFirst(); //删除第一个AHHAHAHA System.out.println(shanchu); System.out.println(list); //[ASD, 123, WWW, 12SW] System.out.println("!!!!!!!!!!!"); //获取元素 String get=list.getLast(); //获取最后一个元素 System.out.println(get); //12SW System.out.println(list); System.out.println("!!!!!!!!!!!"); //pop弹出 String pop=list.pop(); //弹出第一个元素 System.out.println(pop); //ASD System.out.println(list); System.out.println("!!!!!!!!!!!"); //push推入 list.push("MAMMAMAM"); System.out.println(list); //[MAMMAMAM, 123, WWW, 12SW] System.out.println("!!!!!!!!!!!"); } }
代码结果如下: 添加了三个元素: [123, WWW, 12SW] !!!!!!!!!!!
通过addFirst添加了第一个元素 [AHHAHAHA, ASD, 123, WWW, 12SW] !!!!!!!!!!!
通过removeFirst第一个元素 AHHAHAHA [ASD, 123, WWW, 12SW] !!!!!!!!!!!
通过getLast获取最后一个元素 12SW [ASD, 123, WWW, 12SW] !!!!!!!!!!!
通过pop弹出第一个元素 ASD [123, WWW, 12SW] !!!!!!!!!!!
通过push推入第一个元 [MAMMAMAM, 123, WWW, 12SW] !!!!!!!!!!!
四、Vector类 jdk1.2(现在是1.9)之后被ArrayList类取代。