【Java】集合进阶——List集合

简介: 【Java】集合进阶——List集合

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 集合的特有功能


目录
相关文章
|
1月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
94 3
|
5天前
|
Oracle Java 关系型数据库
掌握Java Stream API:高效集合处理的利器
掌握Java Stream API:高效集合处理的利器
147 80
|
12天前
|
安全 Java API
Java 8 Stream API:高效集合处理的利器
Java 8 Stream API:高效集合处理的利器
166 83
|
3月前
|
消息中间件 算法 安全
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
|
1月前
|
安全 Java API
Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解
本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。 [代码下载](https://pan.quark.cn/s/14fcf913bae6)
47 4
|
1月前
|
存储 缓存 安全
Java 集合容器常见面试题及详细解析
本文全面解析Java集合框架,涵盖基础概念、常见接口与类的特点及区别、底层数据结构、线程安全等内容。通过实例讲解List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)、Map(如HashMap、TreeMap)等核心组件,帮助读者深入理解集合容器的使用场景与性能优化。适合准备面试或提升开发技能的开发者阅读。
38 0
|
1月前
|
存储 缓存 安全
Java 集合篇面试题全面总结及答案解析
本文总结了Java集合框架的核心概念、常见集合类的特性与应用场景,以及开发中可能遇到的问题与解决方案。内容涵盖集合框架的基础接口(如Collection、Set、List、Map)、泛型的优点、线程安全集合类(如ConcurrentHashMap、CopyOnWriteArrayList)、常见集合类的区别(如ArrayList与LinkedList、HashMap与HashTable)等。此外,还详细介绍了如何实现LRU缓存、FIFO队列、优先级队列及栈等数据结构,并提供了相关代码示例。通过本文,读者可以全面掌握Java集合相关的面试知识点及其实际应用技巧。
63 1
|
1月前
|
存储 监控 Java
Java内存管理集合框架篇最佳实践技巧
本文深入探讨Java 17+时代集合框架的内存管理最佳实践,涵盖不可变集合、Stream API结合、并行处理等现代特性。通过实战案例展示大数据集优化效果,如分批处理与内存映射文件的应用。同时介绍VisualVM、jcmd等内存分析工具的使用方法,总结六大集合内存优化原则,助你打造高性能Java应用。附代码资源链接供参考。
49 3
|
1月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
61 4