- UID
- 1029342
- 性别
- 男
|
15.20 List集合的特有功能概述和测试
1. void add(int index,Eelement):
在列表的指定位置插入指定元素(可选操作)。
2. Eremove(int index):
移除列表中指定位置的元素(可选操作)。
3. Eget(int index):
返回列表中指定位置的元素。
4. Eset(int index, Eelement):
用指定元素替换列表中指定位置的元素(可选操作)。
例:
list.add(2,"javaee");//在2的位置插入javaee,改变集合长度
list.get(2)//返回集合中2位置上的元素,不改变集合长度
list.remove(1)//删除集合中1位置上的元素,返回被删除的元素,改变集合长度
list.set(2, "javaee")//将集合中2位置上的元素替换为javaee,返回被替换的元素,不改变集合长度
15.21 List集合的特有遍历功能
1 for (int i = 0; i < list.size(); i++)
2
3 {
4
5 String s = (String)list.get(i);
6
7 System.out.println(s);
8
9 }
15.22 List存储自定义对象并遍历(使用List特有功能遍历)
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 List list = new ArrayList();
7 //创建学生对象并添加到集合
8 list.add(new Student("小明",23));
9 list.add(new Student("小红",32));
10 list.add(new Student("小强",14));
11 list.add(new Student("旺财",8));
12 list.add(new Student("张三",16));
13
14 for (int i = 0; i < list.size(); i++)
15 {
16 Student s =(Student)list.get(i);
17 System.out.println(s.getName()+":"+s.getAge());
18 }
19 }
20 }
15.23 ListIterator的特有功能
ListIterator<E> listIterator():
返回此列表元素的列表迭代器(按适当顺序)。
注意istIterator可以实现逆向遍历,但是必须先正向遍历,才能逆向遍历
例:
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 List list = new ArrayList();
7
8 list.add("hello");
9 list.add("world");
10 list.add("java");
11 //列表迭代器
12 ListIterator lit = list.listIterator();
13 //正向遍历
14 while(lit.hasNext())
15 {
16 String s = (String)lit.next();
17 System.out.println(s);
18 }
19 System.out.println("-----");
20 //逆向遍历
21 while(lit.hasPrevious())
22 {
23 //获取上一个元素
24 String s = (String)lit.previous();
25 System.out.println(s);
26 }
27
28 }
29 }
运行结果:
hello
world
java
-----
java
world
hello
15.24 并发修改异常的产生原因及解决方案
例:
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 List list = new ArrayList();
7
8 list.add("hello");
9 list.add("world");
10 list.add("java");
11 Iterator it = list.iterator();
12 while(it.hasNext())
13 {
14 String s = (String)it.next();
15 if(s.equals("world"))
16 list.add("javaee");
17 }
18 System.out.println(list);
19 }
20 }
上面的代码会运行错误,发生ConcurrentModificationException异常
错误产生原因:迭代器是依赖于集合存在的,在迭代的过程中使用集合的方法添加元素迭代器是不知道的,所以报错,并发修改异常
解决方案:1.用迭代器迭代元素时使用迭代器修改元素(ListIterator列表迭代器),添加的元素在迭代的元素后面
2.用集合遍历元素,用集合修改元素(for循环),添加的元素在最后
15.25 数据结构之栈和队列
数据结构:数据的组织方式
15.26 数据结构之数组和链表
数组:存储同一种类型的多个元素的容器
链表:由一个链子把多个节点(数据和节点)连起来组成的数据
15.27 List的三个子类的特点
ArrayList:底层数据结构是数组,查询快,增删慢,是不同步的,线程不安全,效率高
Vector:底层数据结构是数组,查询快,增删慢,是同步的,线程安全,效率低
LinkedList:底层数据结构是链表,查询慢,增删快,是不同步的,线程不安全,效率高 |
|