集合--------List

一.List集合的特有功能概述和测试

 List集合的特有功能概述
    

void add(int index,E element)
E remove(int index)
E get(int index)
E set(int index,E element)
package com.pg.list;

import java.util.ArrayList;
import java.util.List;

public class Demo1_List {

	
	public static void main(String[] args) {
		//demo1();
		//demo2();
		//demo3();
		//demo4();
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		list.set(1, "z");	//将指定位置的元素修改
		System.out.println(list);
	}

	public static void demo4() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		//Object obj1 = list.get(2);
		//System.out.println(obj1);
		//通过索引遍历List集合
		for(int i = 0;i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}

	public static void demo3() {
		List list = new ArrayList();
		list.add(111);
		list.add(222);
		list.add(333);
		
		list.remove(111);	//删除的时候不会自动装箱,把111当作索引
		System.out.println(list);
	}

	public static void demo2() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		Object obj = list.remove(1);	//通过索引删除元素,将被删除的元素返回
		System.out.println(obj);
		System.out.println(list);
	}

	public static void demo1() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		list.add(4, "f");//index<=size并且index>=0都不会报异常
		//list.add(1,"e");
		//list.add(10, "z");//java.lang.IndexOutOfBoundsException,当存储时使用不存在的索引时
		System.out.println(list);
	}

}

二.List集合存储学生对象并遍历

向List集合中存储学生对象,通过size()和get()方法结合使用遍历

package com.heima.list;

import java.util.ArrayList;
import java.util.List;

import com.pg.bean.Student;

public class Demo2_List {


	public static void main(String[] args) {
		List list = new ArrayList();
		list.add(new Student("张三", 23));//Object obj = new Student("张三",23);
		list.add(new Student("李四", 24));
		list.add(new Student("王五", 25));
		list.add(new Student("赵六", 26));
		
		for(int i = 0; i < list.size(); i++) {
			//System.out.println(list.get(i));	//通过索引获取每一个元素
			Student s = (Student)list.get(i);
			System.out.println(s.getName() + "..." + s.getAge());
		}
	}

}

三.并发修改异常产生的原因及解决方案

需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

1.ConcurrentModificationException出现
   迭代器遍历,集合修改集合
2.解决方案
    a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
    b:集合遍历元素,集合修改元素

package com.pg.list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Demo3_List {

	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("a");		//Object obj = new String();
		list.add("b");
		list.add("world");
		list.add("c");
		list.add("d");
		list.add("e");
		
		/*Iterator it = list.iterator();		//获取迭代器
		while(it.hasNext()) {			//判断集合中是否有元素
			String str = (String)it.next();		//向下转型
			if("world".equals(str)) {
				list.add("javaee");//遍历的同时在增加元素,并发修改ConcurrentModificationException
			}
		}*/
		
		ListIterator lit = list.listIterator();//获取迭代器(List集合特有的)
		while(lit.hasNext()) {
			String str = (String)lit.next();//向下转型
			if("world".equals(str)) {
				//list.add("javaee");//遍历的同时在增加元素,并发修改ConcurrentModificationException
				lit.add("javaee");
			}
		}
		
		System.out.println(list);
	}

}

四.ListIterator

boolean hasNext()是否有下一个

boolean hasPrevious()是否有前一个
Object next()返回下一个元素
Object previous();返回上一个元素

package com.pg.list;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Demo4_ListIterator {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("a");		//Object obj = new String();
		list.add("b");
		list.add("world");
		list.add("c");
		list.add("d");
		list.add("e");
		
		ListIterator lit = list.listIterator();	//获取迭代器
		while(lit.hasNext()) {
			System.out.println(lit.next()); //获取元素并将指针向后移动
		}
		
		System.out.println("-----------------");
		
		while(lit.hasPrevious()) {
			System.out.println(lit.previous()); //获取元素并将指针向前移动
		}
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值