List
此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
一 功能:增加、删除、获取、修改、迭代器
package it.Collection; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /*List集合不可重复 * 特有功能: * 增加: void add(int index,E element) * 删除 : E remove(int index) * 获取: E get(int index) * 修改: E set(int index,E element) * 迭代器: ListIterator listIterator() */ public class ListDamo1 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); //添加 list.add(0, "诸葛亮"); list.add(1, "司马懿"); list.add(2, "周瑜"); list.add(3, "曹操"); list.add(4, "刘备"); list.add(5, "孙权"); list.add(4, "刘备1"); //在索引前添加元素 // System.out.println(list); //删除 // System.out.println(list.remove(4));//返回那个被删除的元素 //获取 System.out.println(list.get(5));//获取指定索引的元素 //修改 System.out.println(list.set(0,"猪")); //返回set前对应索引的数据 System.out.println(list); //迭代器 ListIterator<String> i = list.listIterator(); //正迭代 while(i.hasNext()){ String s= i.next(); System.out.println(s); } System.out.println("-------------------------"); //反迭代 while(i.hasPrevious()){ String s = i.previous(); System.out.println(s); } } }
二 练习题:判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码:
package it.Collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /*例题 :判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码: * 迭代器: ListIterator listIterator()//添加功能 */ public class ListDamoTest02 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); // 添加 list.add(0, "诸葛亮"); list.add(1, "司马懿"); list.add(2, "周瑜"); list.add(3, "曹操"); list.add(4, "刘备"); list.add(5, "孙权"); // 迭代器 ListIterator<String> i = list.listIterator(); /* * 由于迭代器是依赖于集合存在的,当集合发生改变后,迭代器再迭代就会发生并发修改异常。 解决方案: A:迭代器循环,迭代器修改。 * 在要迭代的后面添加元素。 */ while (i.hasNext()) { String s = i.next(); if ("曹操".equals(s)) { i.add("孙悟空"); } System.out.println(s); } System.out.println(list); System.out.println("-------------------------"); // B:集合循环,集合修改。元素添加在最后面 for (int a = 0; a < list.size(); a++) { if ("曹操".equals(a)) { list.add("孙悟空"); } } System.out.println(list); } }
三 什么叫数据结构?
就是数据的存储方式
四 常见的数据结构(栈、队列、数组、链表)
A 栈 :先进后出
B 队列:先进先出
C 数组
D 链表
五 List的子类特点(面试题)
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。