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

本文深入解析了List接口及其在Java集合框架中的应用,介绍了List的基本特性,包括元素的精确控制、索引访问和搜索功能。文章详细阐述了List提供的各种方法,如add、addAll、get、indexOf、lastIndexOf、remove、set和subList等,并通过代码示例展示了这些方法的具体用法。同时,文章还探讨了集合遍历和修改时可能遇到的ConcurrentModificationException问题,并提供了相应的解决方案。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值