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

接口 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发现它继承Iterator
		while(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());//hello
		while(listIterator.hasPrevious()){
			String s = (String) listIterator.previous();
			System.out.println(s);
		}
		
	}

}












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







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值