1、List集合的特有功能
-
List集合的增加功能
void add(int index,E element); 在指定位置添加元素
-
List集合的删除功能
Object remove(int index) 根据索引删除元素,返回被删除的元素
-
List集合的获取功能
Object get(int index) 获取指定位置上的元素
-
List集合的修改功能
Object set(int index , object element) 根据索引修改元素,返回被修改的元素
2、List集合存储字符串并遍历(迭代器和普通for)
- package com.fenxiangbe.collection;
- import java.util.ArrayList;
- import java.util.List;
- public class Test3 {
- public static void main(String[] args) {
- List l = new ArrayList();
- l.add(“a”);
- l.add(“b”);
- l.add(“c”);
- l.add(“d”);
- for (int i = 0; i < l.size(); i++) {
- System.out.println(l.get(i));
- }
- }
- }
3、List集合存储自定义对象并遍历(迭代器和普通for)
- package com.fenxiangbe.collection;
- import java.util.ArrayList;
- import java.util.List;
- import com.fenxiangbe.bean.Student;
- public class Test4 {
- public static void main(String[] args) {
- List l = new ArrayList();
- l.add(new Student(“张三”, 23));
- l.add(new Student(“李四”, 24));
- l.add(new Student(“王五”, 25));
- for (int i = 0; i < l.size(); i++) {
- System.out.println(l.get(i));
- }
- }
- }
4、并发修改异常出现的原因?解决方案?
- 报错:ConcurrentModificationException
- 原因:迭代器是依赖于集合而存在的。我们在通过迭代器迭代的过程中,用集合往集合中添加了元素,而并没有重新获取迭代器,所以,报错。
解决方案:
- a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
- b:集合遍历元素,集合修改元素
案例代码
- package com.fenxiangbe.collection;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.ListIterator;
- public class Test5 {
- public static void main(String[] args) {
- List l = new ArrayList();
- l.add(“a”);
- l.add(“b”);
- l.add(“c”);
- l.add(“d”);
- ListIterator li = l.listIterator();
- while(li.hasNext()){
- String s = (String)li.next();
- if(“c”.equals(s)){
- li.add(“fenxingbe”);
- }
- }
- System.out.println(l);
- }
- }
5、常见的数据结构的特点
- 数组:查询快,修改也快,但是增删慢
- 链表:查询慢,修改慢,但是增删快
6、List集合的子类特点
- arraylest:底层是数组结构,所以查询快,增删慢,线程不安全的,效率高
- Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。
- Vector相对ArrayList查询慢(线程安全的)
- Vector相对LinkedList增删慢(数组结构)
- LinkedList: 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。
Vector和ArrayList的区别
- 区别:Vector是线程安全的,效率低 ArrayList是线程不安全的,效率高
- 共同点:都是数组实现的
ArrayList和LinkedList的区别
- 区别:ArrayList底层是数组结果,查询和修改快 LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
- 共同点:都是线程不安全的
List有三个子类,我们到底使用谁呢?
- 查询多用ArrayList
- 增删多用LinkedList
- 如果都多ArrayList
评论前必须登录!
注册