JAVA高级基础(4)---List接口

List接口

List是有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引访问元素,并搜索列表中的元素。   

List 集合里添加了一些根据索引来操作集合元素的方法

    void add(int index, Object ele)
    boolean addAll(int index, Collection eles)
    Object get(int index)
    int indexOf(Object obj)
    int lastIndexOf(Object obj)
    Object remove(int index)
    Object set(int index, Object ele)
    List subList(int fromIndex, int toIndex)

注:更多详细方法请自行在 API 上查找

集合遍历修改的问题

ConcurrentModificationException

当在使用迭代器进行迭代集合的时候,不允许向原集合添加元素,但可以原集合当前元素之后的元素的值

如何解决ConcurrentModificationException?

  1. 使用迭代器进行元素的添加
  2. 不使用迭代器迭代;可以使用for循环

 相关代码

package org.lanqiao.collection.demo;

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

public class ListDemo {
	public static void main(String[] args) {
		/*
		 * List 集合里添加了一些根据索引来操作集合元素的方法
			void add(int index, Object ele)
			boolean addAll(int index, Collection eles)
			Object get(int index)
			int indexOf(Object obj)
			int lastIndexOf(Object obj)
			Object remove(int index)
			Object set(int index, Object ele)
			List subList(int fromIndex, int toIndex)
		 */
		//创建List集合
		List list = new ArrayList();
		//添加元素
		list.add("aa");
		list.add("bb");
		list.add("cc");
		//在指定的位置添加元素
		list.add(1, "java");
		List list2 = new ArrayList();
		list2.add("IOS");
		list2.add("android");
		list.addAll(list2);
		list.addAll(0, list2);
		
		//获取集合中元素的个数
		System.out.println(list.size());
		//list集合的迭代
		Iterator  iter = list.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next());
		}
		System.out.println("---------------------");
		Object obj = list.get(1);
		System.out.println(obj);
		for(int i = 0; i <list.size();i++) {
			System.out.println(list.get(i));
			
		}
		System.out.println("---------------------");
		int i  = list.indexOf("android");
		System.out.println(i);
		System.out.println("---------------------");
		int i1 = list.lastIndexOf("android");
		System.out.println(i1);
		System.out.println("---------------------");
		list.remove(1);
		for(int k = 0; k <list.size();k++) {
			System.out.println(list.get(k));
			
		}
		System.out.println("---------------------");
		list.set(0, "javase");
		
		for(int k = 0; k <list.size();k++) {
			System.out.println(list.get(k));
			
		}
		System.out.println("---------------------");
		List list3 = list.subList(3, 5);
		for(int m = 0 ; m < list3.size();m++) {
			
			System.out.println(list3.get(m));
		}
		System.out.println("-------ListIterator正向迭代--------------");
		ListIterator listIter = list.listIterator();
		while(listIter.hasNext()) {
			//listIter.next();
			System.out.println(listIter.next());
			
		}
		System.out.println("-------ListIterator逆向迭代--------------");
		while(listIter.hasPrevious()) {
			System.out.println(listIter.previous());
			
		}
		System.out.println("-------ListIterator再次正向迭代--------------");
		while(listIter.hasNext()) {
			Object obje = listIter.next();
			if(obje.equals("java")) {
				//listIter.set("javame");
				//listIter.add("javaee");
				//listIter.previous();
				//list.add("ObjectC");
				//list.set(2, "mmmmm");
				//listIter.previous();
			}
			System.out.println(obje);
			
		}
		System.out.println("-------ConcurrentModificationException--------------");
		for(int x = 0 ; x <list.size();x++ ) {
			Object o = 	list.get(x);
			if(o.equals("java")) {
				list.add(list.indexOf("java") + 1,"python");
				
			}
			System.out.println(o);
			
		}
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值