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
- java基础学习集合之list 九-2
- java基础学习集合之list实现类 九-3
- java基础学习之集合-List
- java基础学习集合之Collection 九-1
- java基础学习集合之Set 九-6
- java基础学习集合之Collections 九-8
- java基础学习集合之Map 九-9
- java基础学习之集合总结 九-10
- java基础之集合List
- java学习之List集合
- java学习------------java集合学习之List
- java 学习之九(集合)
- Java基础<十一>--->集合之List、Set
- 黑马程序员 java基础之list集合
- java基础之集合函数-List
- Java基础之List集合原理(一)
- Java基础之List集合原理(二)
- Java基础之List--常用集合
- iOS开发中遇到过的坑
- 优化MySchool 第六章 上机
- 数据库的实现
- java中equals()方法与hashCode()方法的隐式调用时的约定详解
- Java中的原子操作类
- java基础学习集合之list 九-2
- 行为类模式(读书笔记)
- WSClient客户端调用---codehaus.xfire
- C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
- ORCLE 知识总结
- LeetCode-35. Search Insert Position
- 优化MySchool 数据库设计 第二章 上机
- 死后的灵魂,如何看待生前的人生
- 如何快速转载CSDN中的博客