Board logo

标题: 技术丶交流 java对象数组的概述和使用(5) [打印本页]

作者: yuyang911220    时间: 2017-4-22 16:53     标题: 技术丶交流 java对象数组的概述和使用(5)

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:底层数据结构是链表,查询慢,增删快,是不同步的,线程不安全,效率高




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0