List
Posted Hello Word
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List相关的知识,希望对你有一定的参考价值。
1 /* 2 * 需求:List集合存储字符串并遍历。 3 */ 4 public class ListDemo { 5 public static void main(String[] args) { 6 // 创建集合对象 7 List list = new ArrayList(); 8 9 // 创建字符串并添加字符串 10 list.add("hello"); 11 list.add("world"); 12 list.add("java"); 13 14 // 遍历集合 15 Iterator it = list.iterator(); 16 while (it.hasNext()) { 17 String s = (String) it.next(); 18 System.out.println(s); 19 } 20 } 21 }
=======================================
1 /* 2 * List集合的特点: 3 * 有序(存储和取出的元素一致),可重复的。 4 */ 5 public class ListDemo2 { 6 public static void main(String[] args) { 7 // 创建集合对象 8 List list = new ArrayList(); 9 10 // 存储元素 11 list.add("hello"); 12 list.add("world"); 13 list.add("java"); 14 list.add("javaee"); 15 list.add("android"); 16 list.add("javaee"); 17 list.add("android"); 18 19 // 遍历集合 20 Iterator it = list.iterator(); 21 while (it.hasNext()) { 22 String s = (String) it.next(); 23 System.out.println(s); 24 } 25 } 26 }
=======================================
1 /* 2 * List集合的特有功能: 3 * A:添加功能 4 * void add(int index,Object element):在指定位置添加元素 5 * B:获取功能 6 * Object get(int index):获取指定位置的元素 7 * C:列表迭代器 8 * ListIterator listIterator():List集合特有的迭代器 9 * D:删除功能 10 * Object remove(int index):根据索引删除元素,返回被删除的元素 11 * E:修改功能 12 * Object set(int index,Object element):根据索引修改元素,返回被修饰的元素 13 */ 14 public class ListDemo { 15 public static void main(String[] args) { 16 // 创建集合对象 17 List list = new ArrayList(); 18 19 // 添加元素 20 list.add("hello"); 21 list.add("world"); 22 list.add("java"); 23 24 // void add(int index,Object element):在指定位置添加元素 25 // list.add(1, "android");//没有问题 26 // IndexOutOfBoundsException 27 // list.add(11, "javaee");//有问题 28 // list.add(3, "javaee"); //没有问题 29 // list.add(4, "javaee"); //有问题 30 31 // Object get(int index):获取指定位置的元素 32 // System.out.println("get:" + list.get(1)); 33 // IndexOutOfBoundsException 34 // System.out.println("get:" + list.get(11)); 35 36 // Object remove(int index):根据索引删除元素,返回被删除的元素 37 // System.out.println("remove:" + list.remove(1)); 38 // IndexOutOfBoundsException 39 // System.out.println("remove:" + list.remove(11)); 40 41 // Object set(int index,Object element):根据索引修改元素,返回被修饰的元素 42 System.out.println("set:" + list.set(1, "javaee")); 43 44 System.out.println("list:" + list); 45 } 46 }
========================================
1 /* 2 * List集合的特有遍历功能: 3 * size()和get()方法结合使用 4 */ 5 public class ListDemo2 { 6 public static void main(String[] args) { 7 // 创建集合对象 8 List list = new ArrayList(); 9 10 // 添加元素 11 list.add("hello"); 12 list.add("world"); 13 list.add("java"); 14 15 // Object get(int index):获取指定位置的元素 16 // System.out.println(list.get(0)); 17 // System.out.println(list.get(1)); 18 // System.out.println(list.get(2)); 19 // IndexOutOfBoundsException 20 // System.out.println(list.get(3)); 21 22 // 用循环改进 23 // for (int x = 0; x < 3; x++) { 24 // System.out.println(list.get(x)); 25 // } 26 // 如果元素过多,数起来就比较麻烦,所以我们使用集合的一个长度功能:size() 27 // 最终的遍历方式就是:size()和get() 28 for (int x = 0; x < list.size(); x++) { 29 // System.out.println(list.get(x)); 30 31 String s = (String) list.get(x); 32 System.out.println(s); 33 } 34 } 35 }
========================================
1 /* 2 * 列表迭代器: 3 * ListIterator listIterator():List集合特有的迭代器 4 * 该迭代器继承了Iterator迭代器,所以,就可以直接使用hasNext()和next()方法。 5 * 6 * 特有功能: 7 * Object previous():获取上一个元素 8 * boolean hasPrevious():判断是否有元素 9 * 10 * 注意:ListIterator可以实现逆向遍历,但是必须先正向遍历,才能逆向遍历,所以一般无意义,不使用。 11 */ 12 public class ListIteratorDemo { 13 public static void main(String[] args) { 14 // 创建List集合对象 15 List list = new ArrayList(); 16 list.add("hello"); 17 list.add("world"); 18 list.add("java"); 19 20 // ListIterator listIterator() 21 ListIterator lit = list.listIterator(); // 子类对象 22 // while (lit.hasNext()) { 23 // String s = (String) lit.next(); 24 // System.out.println(s); 25 // } 26 // System.out.println("-----------------"); 27 28 // System.out.println(lit.previous()); 29 // System.out.println(lit.previous()); 30 // System.out.println(lit.previous()); 31 // NoSuchElementException 32 // System.out.println(lit.previous()); 33 34 while (lit.hasPrevious()) { 35 String s = (String) lit.previous(); 36 System.out.println(s); 37 } 38 System.out.println("-----------------"); 39 40 // 迭代器 41 Iterator it = list.iterator(); 42 while (it.hasNext()) { 43 String s = (String) it.next(); 44 System.out.println(s); 45 } 46 System.out.println("-----------------"); 47 48 } 49 }
========================================
1 /* 2 * 问题? 3 * 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。 4 * 5 * ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 6 * 产生的原因: 7 * 迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。 8 * 其实这个问题描述的是:迭代器遍历元素的时候,通过集合是不能修改元素的。 9 * 如何解决呢? 10 * A:迭代器迭代元素,迭代器修改元素 11 * 元素是跟在刚才迭代的元素后面的。 12 * B:集合遍历元素,集合修改元素(普通for) 13 * 元素在最后添加的。 14 */ 15 public class ListIteratorDemo2 { 16 public static void main(String[] args) { 17 // 创建List集合对象 18 List list = new ArrayList(); 19 // 添加元素 20 list.add("hello"); 21 list.add("world"); 22 list.add("java"); 23 24 // 迭代器遍历 25 // Iterator it = list.iterator(); 26 // while (it.hasNext()) { 27 // String s = (String) it.next(); 28 // if ("world".equals(s)) { 29 // list.add("javaee"); 30 // } 31 // } 32 33 // 方式1:迭代器迭代元素,迭代器修改元素 34 // 而Iterator迭代器却没有添加功能,所以我们使用其子接口ListIterator 35 // ListIterator lit = list.listIterator(); 36 // while (lit.hasNext()) { 37 // String s = (String) lit.next(); 38 // if ("world".equals(s)) { 39 // lit.add("javaee"); 40 // } 41 // } 42 43 // 方式2:集合遍历元素,集合修改元素(普通for) 44 for (int x = 0; x < list.size(); x++) { 45 String s = (String) list.get(x); 46 if ("world".equals(s)) { 47 list.add("javaee"); 48 } 49 } 50 51 System.out.println("list:" + list); 52 } 53 }
以上是关于List的主要内容,如果未能解决你的问题,请参考以下文章