List
1:
Collection(接口):
- List 元素有序且允许重复,集合具有索引的概念(接口)
- ArrayList(具体子类)
- Set 元素无序且唯一,集合没有索引
package com.shujia.day12;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo1 {
public static void main(String[] args) {
//1. 创建集合对象
List list1 = new ArrayList();
//2. 创建并添加元素
list1.add("java");
list1.add("hadoop");
list1.add("hive");
list1.add("hbase");
list1.add("数据采集");
//3. 遍历
Iterator iterator = list1.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
2:
因为List相关集合具备了索引的概念,所以List集合它里面就会出现与索引相关的方法
List集合中的元素具有有序的特点,这里的有序不是指排序,而是指的是存储和取出的顺序一致。
void add(int index,E element)
E remove(int index)
E get(int index)
E set(int index,E element)
ListIterator listIterator()
package com.shujia.day12;
import java.util.ListIterator;
import java.util.List;
import java.util.ArrayList;
public class ListDemo2 {
public static void main(String[] args) {
//创建集合对象
List list1=new ArrayList();
list1.add("java");
list1.add("hadoop");
list1.add("hive");
list1.add("apple");
System.out.println(list1);
System.out.println("=====================");
//void add(int index,E element)
list1.add(1,"mysql");
System.out.println(list1);
System.out.println("=====================");
//E remove(int index) 指定索引删除元素,返回被删除的元素值
// Object o=list1.remove(10);//IndexOutOfBoundsException
Object o= list1.remove(2);
System.out.println(list1);
System.out.println("=====================");
//E get(int index) 指定索引获取索引位置上的元素
Object o1=list1.get(2);
System.out.println(o1);
System.out.println("=====================");
//E set(int index,E element) 通过索引设置元素值,返回的是初始的元素值
Object o2=list1.set(3,"data");
System.out.println(o2);
System.out.println("=====================");
//ListIterator listIterator() 列表迭代器,List集合特有的迭代器
ListIterator listIterator= list1.listIterator();
while(listIterator.hasNext()){
System.out.println(listIterator.next());
}
//无论是ListIterator迭代器,还是Iterator迭代器,指针只有一个,而且最开始的时候,在迭代器的最左边
//所以要想反向遍历,得先正向遍历一遍,将指针移动到最右边
while (listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
}
}
3:
在一个存储字符串的集合中,查找"java"这个元素,如果找到了,就将"flink"添加到集合中,在哪添加无所谓。
ConcurrentModificationException 并发修改异常
原因是,在遍历迭代器的时候,集合的长度发生了变化,而迭代器不知道,长度不一致,报错。
如何避免这样的问题。
迭代器遍历,迭代器修改,集合遍历,集合修改
package com.shujia.day12;
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 list1=new ArrayList();
list1.add("java");
list1.add("hadoop");
list1.add("hive");
list1.add("apple");
System.out.println(list1);
//方式1:
Object[] arr=list1.toArray();
for (int i=0;i< arr.length;i++){
String s=(String) arr[i];
if ("java".equals(s)){
list1.add("flink");
}
}
System.out.println(list1);
// Iterator iterator= list1.iterator();
// while(iterator.hasNext()){
//// System.out.println(iterator.next());
// Object next=iterator.next();
// String s=(String) next;
// if("java".equals(s)){
// list1.add("flink");
// }
// }
// System.out.println(list1);
//方式2:
ListIterator listIterator= list1.listIterator();
while (listIterator.hasNext()){
String s1=(String) listIterator.next();
if ("hadoop".equals(s1)){
listIterator.add("maven");//将元素添加到指定元素的后一位
}
}
System.out.println(list1);
}
}
标签:java,List,list1,System,Collection,add,接口,println,out
From: https://www.cnblogs.com/peculiar/p/18056661