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


目录
相关文章
|
8月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
382 100
|
8月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
376 101
|
8月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
7月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
205 7
|
7月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
323 4
|
9月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
1032 23
|
8月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
249 4
|
9月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
487 12
|
9月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
|
10月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
461 1