java 集合(三)List接口
package cn.sasa.demo1; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListDemo { public static void main(String[] args) { //Collection<String> testColl = new ArrayList<String>(); //testColl.add("qqq"); //speak(testColl);//报错,因为testColl里的元素不是Animal的子类 //List接口的特点: //有序(存的顺序是怎样的,取出的顺序也是怎样的) //有索引 //可以存重复元素 //List接口的常用子类:ArrayList/LinkedList //ArrayList底层采用数组结构,查询快,增删慢,增删会开辟新数组,把原数组的元素copy到新数组中 //LinkList底层采用链表结构,增删快,查询慢,每次查询从链头或链尾查起 //LinkList查找的元素索引如果小于元素长度一半,从链头开始找起,如果大于元素长度的一半,则从链尾找起 //=======================ArrayList============================== /** * List接口的特有方法:一般带有索引的方法 * 添加元素 * add(Object e): 向集合末尾处,添加指定的元素 * add(int index, Object e) 向集合指定索引处,添加指定的元素 */ List<String> strList = new ArrayList<String>(); strList.add("aaa"); strList.add("bbb"); strList.add("ccc"); strList.add("ddd"); System.out.println(strList.toString()); strList.add(2,"ddd"); System.out.println(strList.toString()); /** * 删除元素 * remove(Object e) 根据对象删除集合中的对象,返回被删除的对象 * remove(int index) 根据索引删除集合中的对象,返回被删除的对象 */ boolean b = strList.remove("eee"); System.out.println(b); boolean b1 = strList.remove("aaa"); System.out.println(b1); System.out.println(strList.toString()); /** * 替换元素 * set(int index, Object e) 将索引上的元素替换成第二个参数的元素 */ strList.set(0, "hahaha"); System.out.println(strList.toString()); /** * 取出元素 */ String str1 = strList.get(2); System.out.println(str1); //=====================LinkedList========================= //特点:底层链表结构,查询慢,增删快 //LinkedList 的特有方法不能多态调用 LinkedList<String> strLinkList = new LinkedList<String>(); strLinkList.add("1"); strLinkList.add("2"); strLinkList.add("3"); strLinkList.add("4"); //删除第一个/最后一个 String fir = strLinkList.removeFirst(); String last = strLinkList.removeLast(); System.out.println(fir); System.out.println(last); strLinkList.add("6"); strLinkList.add("5"); //取出第一个/最后一个 String firget = strLinkList.getFirst(); String lastget = strLinkList.getLast(); System.out.println(firget); System.out.println(lastget); //添加到链表头/链表尾 strLinkList.addFirst("addFirst"); strLinkList.addLast("addLast"); System.out.println(strLinkList.toString()); } }