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

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84344945

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

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84344945