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一致


相关文章
|
2月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
12天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
34 3
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
190 3
|
29天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
44 5
|
2月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
259 12
基于开源框架Spring AI Alibaba快速构建Java应用
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
49 4
|
2月前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
2月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
78 2
|
2月前
|
前端开发 Java 数据库连接
你不可不知道的JAVA EE 框架有哪些?
本文介绍了框架的基本概念及其在编程领域的应用,强调了软件框架作为通用、可复用的软件环境的重要性。文章分析了早期Java EE开发中使用JSP+Servlet技术的弊端,包括可维护性差和代码重用性低等问题,并阐述了使用框架的优势,如提高开发效率、增强代码规范性和可维护性及提升软件性能。最后,文中详细描述了几种主流的Java EE框架,包括Spring、Spring MVC、MyBatis、Hibernate和Struts 2,这些框架通过提供强大的功能和支持,显著提升了Java EE应用的开发效率和稳定性。
148 1