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

相关文章
|
1月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
算法 Java 数据处理
Java集合框架的优缺点
Java集合框架的优缺点
|
3天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
4天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
4天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
4天前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
17 0
|
8天前
|
Java Maven 开发工具
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
28 1
|
13天前
|
Java 大数据 云计算
Spring框架:Java后台开发的核心
【4月更文挑战第15天】Spring框架在Java后台开发中占据核心位置,因其控制反转(IoC)、面向切面编程(AOP)、事务管理等特性提升效率和质量。Spring提供数据访问集成、RESTful Web服务和WebSocket支持。优势包括高效开发、灵活扩展、强大生态圈和广泛应用。应用于企业级应用、微服务架构及云计算大数据场景。掌握Spring对Java开发者至关重要。
|
15天前
|
存储 Java 编译器
Java集合丛林:深入了解集合框架的秘密
Java集合丛林:深入了解集合框架的秘密
16 0
Java集合丛林:深入了解集合框架的秘密
|
19天前
|
Java BI
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)