博客
关于我
List集合
阅读量:796 次
发布时间:2023-02-06

本文共 2644 字,大约阅读时间需要 8 分钟。

List集合详解:从基础到高级操作全解析

一、starUML的安装与使用

starUML 是一款功能强大的UML图工具,安装过程相对简单。解压后即可运行,无需复杂配置。打开工具后,点击菜单栏的Model,选择UseCaseDiagram即可创建用例图。通过拖拽UseCase和Subject,结合右键绘制元素之间的关系,就能快速生成高质量的用例图。

二、List集合的增删改查

在Eclipse中创建一个新的Java项目,右键新建包com.chendongli.list。以下是List集合的常用操作示例:

1. 增加元素

List
list = new ArrayList<>();list.add("aa");list.add("bb");

2. 查询元素

for (String s : list) {    System.out.println(s);}

3. 修改元素

list.set(1, "老六");

4. 删除元素

Object obj = list.remove(1);System.out.println(obj + "aaa");

注意事项

  • 删除操作时,建议使用list.remove(index),避免在循环中直接修改集合。
  • 避免在遍历集合时进行删除操作,会导致ConcurrentModificationException。

三、List集合的高级操作

1. 列表的增删改查优化

通过设置初始容量和增长因子,可以显著提升性能。例如:

ArrayList list = new ArrayList<>(100);// 初始化容量为100,增长因子为0.5

2. 列表的去重

使用List::contains方法进行去重操作:

ArrayList
list = new ArrayList<>();list.add("aa");list.add("bb");list.add("bb");list.add("dd");list.add("aa");ArrayList
uniqueList = new ArrayList<>();for (String s : list) { if (!uniqueList.contains(s)) { uniqueList.add(s); }}

3. 使用集合作为堆栈或队列

  • 堆栈:新元素始终在顶部,使用removeLast()方法。
  • 队列:先进先出,使用remove()方法。

四、List集合的内部优化

1. 列表的内存布局

List集合的底层采用动态数组存储,支持任意元素类型,且支持定容量和扩容。

2. 增长因子

增长因子决定了集合扩容时的效率。常见的增长因子值有0.5、1.5等。

3. 去重的原理

List集合的去重机制基于equals()方法。如果自定义对象没有重写equals(),则默认比较对象引用是否相同。

五、List集合的实际应用示例

1. 第三方接口调用

List
list = new ArrayList<>();list.add("1");list.add("4");list.add("6");list.add("9");list.add("11");list.add("8");List
filteredList = new ArrayList<>();for (String s : list) { if (Integer.parseInt(s) % 2 == 1) { list.remove(s); }}

2. 遍历方式对比

// 遍历方式一:for循环for (Object obj : list) {    System.out.println(obj);}// 遍历方式二:索引循环for (int i = 0; i < list.size(); i++) {    System.out.println(list.get(i));}// 遍历方式三:迭代器Iterator it = list.iterator();while (it.hasNext()) {    System.out.println(it.next());}

六、Linkedlist的特殊应用

1. 队列实现

public class QueueDemo {    private LinkedList queue = new LinkedList();    public void enqueue(Object obj) {        queue.add(obj);    }    public Object dequeue() {        return queue.remove();    }}

2. 堆栈实现

public class StackDemo {    private LinkedList stack = new LinkedList();    public void push(Object obj) {        stack.add(obj);    }    public Object pop() {        return stack.removeLast();    }}

七、List集合的性能优化

1. 初始化容量

通过设置初始容量,可以减少动态数组的扩容次数,提升性能。

2. 增长因子选择

增长因子选择合适值(如0.5或1.5)可以平衡内存使用和性能。

3. 内部优化

List集合的性能优化主要体现在以下几个方面:

  • 动态数组的内存管理
  • 智能的增长算法
  • 复用性高的数据结构

八、List集合的常见问题

1. 去重失败的原因

默认的contains()方法使用的是对象的引用比较。如果自定义对象没有重写equals(),则去重操作会失败。

2. 遍历时禁止修改集合

避免在遍历集合时进行增删改查操作,否则会抛出ConcurrentModificationException异常。

结论

List集合是Java中最常用的集合类之一,理解其内部机制和使用方法是每个开发人员的必修课。在实际应用中,需要根据具体需求选择合适的集合类型和操作方式,以达到最佳性能和代码简洁性。

转载地址:http://ikufk.baihongyu.com/

你可能感兴趣的文章
linux线程同步的含义,Linux线程同步——条件变量
查看>>
Linux线程编程之生产者消费者问题
查看>>
linux终端 知乎,为 Linux 爱好者打造的极简 Mac 终端 | Linux 中国
查看>>
Linux经常使用命令(一) - ls
查看>>
Linux经常使用命令(十一) - more
查看>>
Linux经常使用命令(十二) - less
查看>>
linux经常使用(一)linux 安装配置 jdk之 找不到安装文件文件夹及source /etc/profile 报unexpected end of file 错误 解决...
查看>>
Linux给/根目录直接扩容_Linux直接给系统盘扩容_Mysql数据盘满了_不用外挂数据盘_迁移mysql数据_直接扩容---Linux工作笔记073
查看>>
linux给用户改变组,Linux用户及用户组的建立,修改和删除
查看>>
linux给用户添加sudo权限
查看>>
linux缓存nscd
查看>>
linux编写一个简单的端口扫描程序,LINUX端口扫描源代码(C实现)
查看>>
linux编程之信号量
查看>>
LINUX编程实战指发送UDP消息
查看>>
linux编程:getenv,putenv,setenv
查看>>
linux编译ffmpeg2.6.2
查看>>
Linux编译FFmpeg支持x265(HEVC) 【failed on redhat 6.5】(updated)
查看>>
linux编译动态库时,libcrypto.a 提示recompile with -fPIC
查看>>
linux编译升级应用,Linux如何升级软件版本
查看>>
linux编译注解
查看>>