2.List
2.1List集合的概述和特点
List集合概述:
有序集合(也称为序列),用户可以精确的控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素。
与Set集合不同,列表通常允许重复的元素
List集合的特点:
有序:存储和取出的元素顺序一致
可重复:存储的元素可以重复。
2.2 List集合特有方法
2.3并发修改异常
并发修改异常:ConcurrentModificationException
产生原因:
迭代器遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致
解决方案:
用for循环遍历,然后用集合对象做对应的操作即可。
2.4ListIterator
ListIterator:列表迭代器
通过List集合的ListIterator()方法得到,所以说他是List集合特有的迭代器
用于允许程序员沿任意方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。
ListIterator中的常用方法:
E next():返回迭代中的下一个元素
boolean hasNext():如果迭代具有更多元素,则返回true
E previous():返回列表的上一个元素
boolean hasPrevious():如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true
void add(E e):将指定的元素插入列表
2.5增强for循环
增强for:简化数组和Collection集合的遍历
实现iterable接口的类允许其对象成为增强型for语句的目标
它是jdk5之后出现的,其内部原理是一个Iterator迭代器。
增强for的格式
格式:
for(元素数据类型 变量名:数组或者Collection集合){
//在此处使用变量即可,该变量就是元素
}
范例:
int[]arr = {1,2,3,4,5};
for(int i : arr){
System.out.println(i);
}
遍历集合:
迭代器:集合特有的遍历方式
普通for:带有索引的遍历方式
增强for:最方便的遍历方式
List<Student> list = new ArrayList<Student>(); Student s1= new Student("林青霞",19); Student s2= new Student("张曼玉",10); Student s3= new Student("王祖贤",19); list.add(s1); list.add(s2); list.add(s3); //迭代器 Iterator<Student> it = list.iterator(); while (it.hasNext()){ Student s = it.next(); System.out.println(s.getName()+","+s.getAge()); } //普通for方式:带有索引的遍历方式 for (int i =0;i<list.size();i++){ Student s = list.get(i); System.out.println(s.getName()+","+s.getAge()); } //增强for方式 for (Student s :list){ System.out.println(s.getName()+","+s.getAge()); }
2.6数据结构
数据结构是计算机存储、组织数据的方式。是指相互之间存在一种或者多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
2.7常见的数据结构之栈
数据进入栈模型的过程为:压/进栈
数据离开栈模型的过程为:弹/出站
栈是一中先进后出的数据结构模型
2.8常见数据结构之队列
数据从后端进入队列的模型的过程称为:入队列
数据从前端离开队列的模型的过程称为:出对列
队列是一种先进先出的模型。
2.9常见数据结构之数组
查询数据通过索引定位,查询任意数据耗时相同,查询效率高
删除数据时,要将原始数据删除,同时后面每个数据前移,删除效率低
添加数据时,添加位置后的每个数据后移,再添加元素,添加效率极低。
2.10常见数据结构之链表
链表是一种增删快的模型(对比数组)
2.11 List集合子类特点
List集合常用子类:ArrayList,Linkedlist
ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层数据结构是链表,查询慢,增删快
2.12LinkedList 集合的特有功能