• java - 集合


    前言

              学习 Java 集合 内容!

    一、集合简介

    Java 中的集合就是容器,用于存储数据,所以又称为容器类。例比,杯子是容器,用于装水。
    数组可以用来存储数据,为什么还需要集合存储数据?
    1、集合能装载不同数据类型的数据,数组只能装载同一种数据类型的数据。
    2、数组长度规定后,存储的数据量是有限的。
    3、数组不能存储含有映射关系(key-val)的数据。

    public class Main {
    	public static void main(String[] args) {
    		// 创建一个集合
    		ArrayList List = new ArrayList();
    		List.add(1);
    		List.add("hello"); 
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总结:Java 集合主要就是负责存储数据,或者是容纳其它数据,所以 Java 集合也叫做 Java 容器。

    二、Java 集合的几个主要表现

    集合是一个通统,具体的分为以下几个,各自装载的数据不同,有各自特性,各自功能不同。都是接口,学习实现类。

    List 列表 ArrayList

    List 是一个接口,ArrayList 是一个具体的类去实现 List 接口。
    LIst 是一个有序的集合(每个元素都有自己的一个索引,第一个元素的索引为 0可以有重复数据,通过索引访问元素。因为有序每一个元素都有唯一的索引,即使有重复数据也可以通过索引找到。

    ArrayList list = new ArrayList ();
    list.add(1);
    list.add(2);
    list.get(0);  // get:通过索引获取数据
    
    • 1
    • 2
    • 3
    • 4

    Set 集合 HashSet

    Set 是一个无序的集合,不允许数据重复,通过数据本身访问数据。因为无序,如果有重复数据就无法具体定位到重复数据。

    HashSet set = new HashSet();
    set.add(1);
    
    • 1
    • 2

    Map 映射 HashMap

    Map 主要存储含有映射关系(k-val)的数据

    HashMap map = new HashMap<String, String>();
    map.put("2021", "张三");
    map.get("2021");  // 通过 key 获取 val
    
    • 1
    • 2
    • 3

    集合的工具类 Collections

    Collections 是一个接口,是 ListSet 的父接口。

    三、集合的遍历

    for 循环方式

    HashSet<Interger> set = new HashSet();  // 只能存储整形数据
    set.add(1);
    set.add(2);
    set.add(3);
    for (Interger x : set)
    System.out.println(x);
    
    ArrayList list = new ArrayList ();
    list.add(1);
    list.add(2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Lambda 表达式

    ArrayList list = new ArrayList ();
    list.add(1);
    list.add(2);
    list.forEach((String name) -> System.out.println(name));
    
    • 1
    • 2
    • 3
    • 4

    Map 集合的遍历

    Map<String, String> map = new HashMap<>();
    map.put("202101", "张三");
    map.put("202102", "李四");
    map.put("202103", "王二");
    map.get("202202");  // get 方法是根据 key 获取 val,输出 李四
    
    // 方式1
    for (Map.Entry<String, String> entry : map.entrySet())  // 一个 entry 代表一个键值对,entrySet 代表所有的键值对
    {
    	String key = entry.getKey();
    	String Val= entry.getValue();
    }
    
    // 方式2
    for (String key : map.keySet()) {  // keySet():所有键值对的 key,key:每一个键值对的 key
    	System.out.println(key);
    }
    for (String value : map.getvalues());// getvalues():所有键值对的 val,value:每一个键值对的 val
    {
    	System.out.println(value);
    }
    
    // 方式3:效率低
    for (String key : map.keySet()) {  // keySet():所有键值对的 key,key:每一个键值对的 key
    	String value = map.get(key);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    突破算法迷宫:精选50道-算法刷题指南
    【网络协议】Http-下
    某评登录与数据获取
    在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
    Day 80
    mysql binlog日志详解及主从复制原理
    Feign负载均衡写法
    密码学·常用网址
    java计算机毕业设计web家教信息服务平台设计与实现源码+mysql数据库+系统+lw文档+部署
    Tinker源码解析
  • 原文地址:https://blog.csdn.net/weixin_39903708/article/details/125609758