吾爱乐享
个人学习网站

#集合笔记二#list集合特有功能及案例迭代

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)

  1. package com.fenxiangbe.collection;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. public class Test3 {
  7.  
  8. public static void main(String[] args) {
  9. List l = new ArrayList();
  10. l.add(“a”);
  11. l.add(“b”);
  12. l.add(“c”);
  13. l.add(“d”);
  14. for (int i = 0; i < l.size(); i++) {
  15. System.out.println(l.get(i));
  16. }
  17. }
  18.  
  19. }
  20.  

3、List集合存储自定义对象并遍历(迭代器和普通for)

  1. package com.fenxiangbe.collection;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import com.fenxiangbe.bean.Student;
  7.  
  8. public class Test4 {
  9.  
  10. public static void main(String[] args) {
  11. List l = new ArrayList();
  12. l.add(new Student(“张三”, 23));
  13. l.add(new Student(“李四”, 24));
  14. l.add(new Student(“王五”, 25));
  15. for (int i = 0; i < l.size(); i++) {
  16. System.out.println(l.get(i));
  17. }
  18. }
  19. }

4、并发修改异常出现的原因?解决方案?

  • 报错:ConcurrentModificationException
  • 原因:迭代器是依赖于集合而存在的。我们在通过迭代器迭代的过程中,用集合往集合中添加了元素,而并没有重新获取迭代器,所以,报错。

 

解决方案:

  • a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
  • b:集合遍历元素,集合修改元素

案例代码

  1. package com.fenxiangbe.collection;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.ListIterator;
  6.  
  7. public class Test5 {
  8. public static void main(String[] args) {
  9. List l = new ArrayList();
  10. l.add(“a”);
  11. l.add(“b”);
  12. l.add(“c”);
  13. l.add(“d”);
  14. ListIterator li = l.listIterator();
  15. while(li.hasNext()){
  16. String s = (String)li.next();
  17. if(“c”.equals(s)){
  18. li.add(“fenxingbe”);
  19. }
  20. }
  21. System.out.println(l);
  22. }
  23.  
  24. }
  25.  

5、常见的数据结构的特点

  • 数组:查询快,修改也快,但是增删慢
  • 链表:查询慢,修改慢,但是增删快

6、List集合的子类特点

  • arraylest:底层是数组结构,所以查询快,增删慢,线程不安全的,效率高
  • Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。
  1. Vector相对ArrayList查询慢(线程安全的)
  2. Vector相对LinkedList增删慢(数组结构)
  • LinkedList: 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。

Vector和ArrayList的区别

  • 区别:Vector是线程安全的,效率低 ArrayList是线程不安全的,效率高
  • 共同点:都是数组实现的

ArrayList和LinkedList的区别

  • 区别:ArrayList底层是数组结果,查询和修改快 LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
  • 共同点:都是线程不安全的

List有三个子类,我们到底使用谁呢?

  •  查询多用ArrayList
  • 增删多用LinkedList
  • 如果都多ArrayList
赞(0) 打赏
未经允许不得转载:吾爱乐享 » #集合笔记二#list集合特有功能及案例迭代

评论 抢沙发

评论前必须登录!

 

推荐免费资源共享,个人经验总结学习

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏