Java集合框架详解1

简介: Java集合框架详解1

一、什么是集合


1.1 概念


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


1.2 与数组的区别


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


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


1.3 导包


import java.util.*;


二、Collection体系


image.png


2.1 Collection 父接口


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


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


2.1.1 常用方法


  1. 添加元素 collection.add();
  2. 删除元素
    collection.remove();
    collection.clear();
  3. 遍历元素(重点)
  1. 使用增强for(因为无下标)
    for(Object object : collection){ }
  2. 使用迭代器
//haNext(); 有没有下一个元素
//next(); 获取下一个元素
//remove(); 删除当前元素
Iterator it = collection.iterator();
while(it.hasNext()){
  String object = (String)it.next(); //强制
  // 可以使用it.remove(); 进行移除元素
  // collection.remove(); 不能用collection其他方法 会报并发修改异常
}


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


2.2 List 子接口


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


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


2.2.1 常用方法


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


  1. 删除元素 可以用索引 list.remove(0)
    当删除数字与索引矛盾时 对数字强转
    list.remove((Object) 10)list.remove(new Integer(10))
  2. 遍历
  1. 使用for遍历
for(int i = 0; i < lise.size(); i++){
  System.out.print(list.get(i)); 
}
  1. 使用增强for
    for(Object list: collection){ }
  2. 使用迭代器
Iterator it = collection.iterator();
while(it.hasNext()){
  String object = (String)it.next(); //强转
  // 可以使用it.remove(); 进行移除元素
  // collection.remove(); 不能用collection其他方法 会报并发修改异常
}


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

ListIterator li = list.listIterator();
while(li.hasNext()){
  System.out.println(li.nextIndex() + ":" + li.next()); //从前往后遍历
}
while(li.hasPrevious()){
  System.out.println(li.previousIndex() + ":" + li.previous()); //从后往前遍历
}
  1. 获取 list.indexOf( );
  2. 返回子集合 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<>();

  1. 添加元素 arrayList.add();
  2. 删除元素 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;
}
  1. 遍历元素【重点】
  1. 使用迭代器
Iterator it = arrayList.iterator();
while(it.hasNext()){
  Student s = (Student)it.next(); //强转
}
  1. 列表迭代器
ListIterator li = arrayList.listIterator();
while(li.hasNext()){
  Student s = (Student)li.next(); //从前往后遍历
}
while(li.hasPrevious()){
  Student s = (Student)li.previous();//从后往前遍历
}
  1. 判断
    arrayList.contains();arrayList.isEmpty();
  2. 查找
    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一致


相关文章
|
3月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
274 100
|
3月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
307 101
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1760 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
2月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
154 8
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
111 7
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
306 23
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。