Java集合框架详解(一)

简介: Java集合框架详解(一)

一、什么是集合


1.1 概念


对象的容器,实现了对对象常用的操作。


1.2 与数组的区别


数组长度固定,集合长度不固定。

数组可以存储基本类型和引用类型,集合只能存储引用类型。


1.3 导包


import java.util.*;


二、Collection体系


63bf3810c372c29d43c6e5efec14b35f_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a2Z5LiN5Z2aMTIwOA==,size_20,color_FFFFFF,t_70,g_se,x_16.png


2.1 Collection 父接口


特点:代表一组任意类型的对象,无序、无下标、不能重复。


创建集合: Collection collection = new ArrayList();


2.1.1 常用方法


添加元素 collection.add();


删除元素


collection.remove();


collection.clear();


遍历元素(重点)


使用增强for(因为无下标)


for(Object object : collection){ }


使用迭代器


//haNext(); 有没有下一个元素
//next(); 获取下一个元素
//remove(); 删除当前元素
Iterator it = collection.iterator();
while(it.hasNext()){
  String object = (String)it.next(); //强制
  // 可以使用it.remove(); 进行移除元素
  // collection.remove(); 不能用collection其他方法 会报并发修改异常
}


判断 collection.contains():是判断一个集合是否包含某个指定对象; collection.isEmpty():是判断一个集合是否为空值;


2.2 List 子接口


特点:有序、有下标、元素可重复


创建集合对象 List list = new ArrayList<>( );


2.2.1 常用方法


添加元素 list.add( ); 会对基本类型进行自动装箱


删除元素 可以用索引 list.remove(0)


当删除数字与索引矛盾时 对数字强转


list.remove((Object) 10) 或 list.remove(new Integer(10))


遍历


使用for遍历


for(int i = 0; i < lise.size(); i++){
  System.out.print(list.get(i)); 
}


使用增强for


for(Object list: collection){ }


使用迭代器


Iterator it = collection.iterator();
while(it.hasNext()){
  String object = (String)it.next(); //强转
  // 可以使用it.remove(); 进行移除元素
  // collection.remove(); 不能用collection其他方法 会报并发修改异常
}


使用列表迭代器 💡(注意和迭代器区别)


ListIterator li = list.listIterator();
while(li.hasNext()){
  System.out.println(li.nextIndex() + ":" + li.next()); //从前往后遍历
}
while(li.hasPrevious()){
  System.out.println(li.previousIndex() + ":" + li.previous()); //从后往前遍历
}


获取 list.indexOf( );


返回子集合 sublist(x, y); 左闭右开


List subList = list.subList(1, 3); 返回索引 1、2


2.2.2 List实现类


ArrayList 【重点】

数组结构实现,必须要连续空间,查询快、增删慢

Vector

数组结构实现,查询快、增删慢

LinkedList

双向链表结构实现,无需连续空间,增删快,查询慢

2.2.2.1 ArrayList

创建集合 ArrayList arrayList = new ArrayList<>();


添加元素 arrayList.add();


删除元素 arrayList.remove(new Student("name", 10));


这里重写了 equals(this == obj) 方法



public boolean equals(Object obj){
//1 判断是不是同一个对象
  if(this == obj){
    return true;
  }
  //2 判断是否为空
  if(obj == null){
    return false;
  }
  //3 判断是否是Student类型
  if(obj instanceof Student){
    Student == (Student)obj;
    //4 比较属性
    if(this.name.equals(s.getName()) && this.age == s.getAge()){
      return true;
    }
  }
  //5 不满足条件返回false
  return false;
}



遍历元素【重点】


使用迭代器


Iterator it = arrayList.iterator();
while(it.hasNext()){
  Student s = (Student)it.next(); //强转
}


列表迭代器


ListIterator li = arrayList.listIterator();
while(li.hasNext()){
  Student s = (Student)li.next(); //从前往后遍历
}
while(li.hasPrevious()){
  Student s = (Student)li.previous();//从后往前遍历
}


判断


arrayList.contains(); 和 arrayList.isEmpty();


查找


arrayList.indexof();


2.2.2.2 Vector


创建集合 Vector vector = new Vector<>();


增加、删除、判断同上


遍历中枚举器遍历


Enumeration en = vector.elements();
while(en.hasMoreElements()){
  String o = (String)en.nextElement();
  System.out.println(o);
}


2.2.2.3 LinkedList


创建链表集合LinkedList li = new LinkedList<>();


常用方法与List一致

相关文章
|
7天前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
167 100
|
7天前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
160 101
|
20天前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
11天前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
381 1
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
11天前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
1月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
144 23
|
24天前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
62 12
|
1月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
|
1月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
118 12
|
1月前
|
存储 NoSQL Java
Java Stream API:集合操作与并行处理
Stream API 是 Java 8 提供的集合处理工具,通过声明式编程简化数据操作。它支持链式调用、延迟执行和并行处理,能够高效实现过滤、转换、聚合等操作,提升代码可读性和性能。