博客
关于我
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:安装Redis
查看>>
Linux:安装ruby
查看>>
Linux:安装rvm
查看>>
Linux:服务器监控神器Netdata
查看>>
lirs cache java库_Java 缓存库 — Caffeine
查看>>
list extend() 索引,不仅将列表元素插入到末尾
查看>>
List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局
查看>>
list set map的区别
查看>>
List 去重的 6 种方法,这个方法最完美
查看>>
List 去重的 6 种方法,这个方法最完美!
查看>>
List 集合去重的 3 种方法
查看>>
List,Set,Map三者的区别(不同点)
查看>>
list.pop 的 numpy 等效项?
查看>>
list.remove()时报java.lang.UnsupportedOperationException异常错误的处理
查看>>
list.size()和list.isEmpty()的区别和效率以及CollectionUtils.isEmpty()的使用
查看>>
List<Map>遍历修改map值
查看>>
List<T> to DataTable
查看>>
ListBox 循环删除当前项
查看>>
listbox相互传值
查看>>
Listener监听器
查看>>