package list_gaowei_01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /* * List * 有序的Collection,允许重复的元素 * 有序:存储和取出的元素一致 * * 可以根据索引来访问列表 * 与set不同的是列表通常允许重复的元素 * */ public class listDemo { public static void main(String[] args) { //创建集合对象 List list = new ArrayList(); list.add("C++"); //永远返回true,底层是个数组 list.add("java"); list.add("python"); list.add("java"); list.add("python"); Iterator it = list.iterator(); while(it.hasNext()) { System.out.println((String)it.next()); } } }
package list_gaowei_01; import java.util.List; import java.util.ArrayList; /* * List集合的特有功能: * * A: 添加元素 * void add(int index,Object obj) * 在指定位置添加元素 * B: 获取元素 * void get(int index,Object obj) * 在指定位置添加元素 * C: 列表特有的迭代器 * ListIterator() * ListIterator(int index) : 从指定索引开始迭代 * * D: 删除功能: * Object remove(int index):根据索引删除元素,并返回元素 * * E: 修改功能: * Object set(int index,Object element) :修改索引处元素,并返回被修改元素 * */ public class listDemo2 { public static void main(String[] args) { List list = new ArrayList(); list.add("hello"); list.add("world"); list.add("my name is gaowei"); list.add(3,"haha"); //list.add(11,"haha"); //IndexOutOfBoundsException System.out.println(list.get(2)); // System.out.println(list.remove(2)); System.out.println(list.set(2,"haha")); System.out.println(list); } }
package list_gaowei_01; /* * * list集合的特有遍历功能 * for循环和list.size()方法结合 * * 迭代器 * ListIterator ListIterator():list集合的特有的迭代器 * 继承了 Iterator迭代器,因此有 hasNext()和next() * * 特有功能: * hasPrevoius() 和 prevoius() 逆向遍历 * 不过,必须得事先进行正向遍历,才能进行逆向遍历! * */ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class listDemo3 { public static void main(String[] args) { List list = new ArrayList(); list.add("hello"); list.add("world"); list.add("my name is gaowei"); // System.out.println(list.get(0)); // System.out.println(list.get(1)); // System.out.println(list.get(2)); // // for(int i=0;i<list.size();i++) { // System.out.println((String)list.get(i)); // } //正向遍历 Iterator it = list.iterator(); while (it.hasNext()) { System.out.println((String) it.next()); } System.out.println("-----------------"); ListIterator listIt = list.listIterator(); while (listIt.hasNext()) { System.out.println((String) listIt.next()); } //反向遍历 System.out.println("-----------------"); while (listIt.hasPrevious()) { System.out.println((String) listIt.previous()); } } }
package list_gaowei_01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /* * 问题: * 我有一个集合,我想判断是否包含“world”这个元素,如果有,我添加一个“javaee” * * 报错: * ConcurrentModificationException * * 原因: * 迭代器是依赖集合而存在的,在判断成功后,集合添加了元素,而迭代器却不知道,索引就报错了 * 这个错叫并发修改异常 * * 因此,迭代器在遍历元素的时候,通过集合是不能修改元素的。 * * 如何解决呢? * A: 迭代器迭代元素,迭代器修改元素, 而Iterator没有添加功能, * 因此用 ListIterator迭代器. * 不过,元素是在刚才迭代的元素之后添加的。 * B: 集合遍历元素,集合修改元素(普通for) * 元素在最后添加的。 * */ public class listDemo4 { public static void main(String[] args) { List list = new ArrayList(); list.add("wo"); list.add("ai"); list.add("our"); list.add("world"); // Iterator it = list.iterator(); // while(it.hasNext()) { // System.out.println((String)it.next()); // if(it.next().equals("world")){ // list.add("javaee"); // } // } // //使用ListIterator迭代器 // ListIterator listit = list.listIterator(); // while(listit.hasNext()) { // String s = (String)listit.next(); // if(s.equals("ai")){ // listit.add("javaee"); // } // // } //使用列表添加元素 for(int i=0;i<list.size();i++) { String s = (String)list.get(i); if(s.equals("ai")) { list.add("javaee"); } } System.out.println(list); } }