java基础学习集合之list 九-2

来源:互联网 发布:licecap for mac 编辑:程序博客网 时间:2024/06/04 19:26

接口 List<E>

有序的 collection(也称为序列)。


成员方法基本和Collection差不多:


测试代码;

package collection;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * list 集合 * @author Angus *Collection *|--list  *元素有序(指的存储顺序和取出顺序一致),可重复 *|--set  *元素无序 ,唯一 */public class ListDemo {public static void main(String[] args) {List list = new ArrayList();//添加list.add("hello");list.add("world");list.add("java");//便利 Iterator it = list.iterator(); while(it.hasNext()){ String s = (String) it.next(); System.out.println(s); }}}
list特有方法:

package collection;import java.util.ArrayList;import java.util.List;/** * List 特有功能 * @author Angus *添加 *add(int index, E element) :  在列表的指定位置插入指定元素(可选操作)。 *删除   *remove(int index) 移除列表中指定位置的元素(可选操作)。 *修改 *set(int index, E element)  用指定元素替换列表中指定位置的元素(可选操作)。 *获取 *get(int index) 返回列表中指定位置的元素。 *indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1 *listIterator()  返回此列表元素的列表迭代器(按适当顺序)。 *listIterator(int index) 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 * 截取 *subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包 */public class ListDemo2 {public static void main(String[] args) {List list = new ArrayList();list.add("hello");list.add("world");list.add("java");//add(int index, E element) :  在列表的指定位置插入指定元素(可选操作)。//list.add(1, "javaEE");//System.out.println(list);//[hello, javaEE, world, java]//remove(int index) 移除列表中指定位置的元素(可选操作)。//list.remove(1);//System.out.println(list); //[hello, java]//set(int index, E element)  用指定元素替换列表中指定位置的元素(可选操作)。//list.set(1, "JVAAEE");//System.out.println(list);//[hello, JVAAEE, java]//get(int index) 返回列表中指定位置的元素。//System.out.println(list.get(1));//world//通过上面的测试,我们发现,索引在编//那么如果我们有办法知道索引的范围,就可以遍历集合//我们知道 0--(size()-1)//结合size和get遍历集合for (int i = 0; i < list.size(); i++) {String s = (String) list.get(i);System.out.println(s);}}}

listIterator

import java.util.ArrayList;  import java.util.Iterator;  import java.util.List;  import java.util.ListIterator;    /**  *   * @author Angus  *  listIterator()  返回此列表元素的列表迭代器(按适当顺序)。  */  public class ListDemo3 {        public static void main(String[] args) {          List list = new ArrayList();          list.add("hello");          list.add("world");          list.add("java");                    //遍历          ListIterator listIterator = list.listIterator();//查看API发现它继承Iterator          while(listIterator.hasNext()){              String s = (String) listIterator.next();              System.out.println(s);          }          System.out.println("----------------------------");          //遍历  //      Iterator it = list.iterator();  //      while(it.hasNext()){  //          String s = (String) it.next();  //          System.out.println(s);  //      }                    //需求,遍历集合判断是否有hello元素,如果有再添加一个元素javaEE                    //方式一;                    Iterator it = list.iterator();          while(it.hasNext()){              String s = (String) it.next();              if("hello".equals(s)){                  list.add("javaEE");  //              it= list.iterator();// 原理可以解决,但是这样也是不行,内存溢出。。              }          }          System.out.println(list);   //Exception in thread "main" java.util.ConcurrentModificationException          //报错了  并发修改异常          //当我们通过迭代器迭代元素的过程中,又通过集合修改了,这样是不允许的          //而目前,迭代器没有变,集合变了,所以,并发异常。                    //解决:          //1:通过迭代器操作的时候,可以通过迭代器对集合进行操作          //2:通过集合普通for遍历的时候,可以通过集合去操作                }    }  

解决代码

//1:通过迭代器操作的时候,可以通过迭代器对集合进行操作  只能是ListIterator  //2:通过集合普通for遍历的时候,可以通过集合去操作  for (int i = 0; i < list.size(); i++) {      String string = (String) list.get(i);      if("hello".equals(string)){          list.add("javaEE");      }        }  System.out.println(list);  //[hello, world, java, javaEE]  System.out.println("----------------------------");  //通过迭代器实现  ListIterator is = list.listIterator();  while(is.hasNext()){      String string2 = (String) is.next();      if("hello".equals(string2)){          is.add("javaEE2");      }  }  System.out.println(list);//[hello, javaEE2, world, java


逆向遍历测试

package collection;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/** *  * @author Angus *listIterator()  返回此列表元素的列表迭代器(按适当顺序)。 *特有功能: *previous() 返回列表中的前一个元素。 *hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。 * *逆向遍历测试 */public class ListDemo3 {public static void main(String[] args) {List list = new ArrayList();list.add("hello");list.add("world");list.add("java");//遍历ListIterator listIterator = list.listIterator();//查看API发现它继承Iteratorwhile(listIterator.hasNext()){String s = (String) listIterator.next();System.out.println(s);}System.out.println("----------------------------");/** * 逆向遍历  前提必须有上面的正向遍历 *///System.out.println(listIterator.previous()); //java//System.out.println(listIterator.previous());//world//System.out.println(listIterator.previous());//hellowhile(listIterator.hasPrevious()){String s = (String) listIterator.previous();System.out.println(s);}}}

最后附上JDK使用文档API 下载







1 0
原创粉丝点击