Java—初学—集合之List

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);
 }

}






猜你喜欢

转载自blog.csdn.net/u013116760/article/details/80169671