【JAVA进阶】Set集合、Map集合

Java 中的 Map 与 Set 集合 在Java中,Map和Set都是接口,是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。Map的实例化子类有TreeMapHashMap等,Set的实例化子类有TreeSetHashSet等它们的模型:一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以模型会有两种,纯 key 模型。 阅读详情

📃个人主页:个人主页

🔥系列专栏:JAVASE基础

目录

一、Set系列集合

1.HashSet

2.LinkedHashSet

3.TreeSet

二、补充知识

1.可变参数

2.集合工具类Collections

 三、Map集合体系

1.Map集合的概述

2.Map集合体系特点

3.Map集合常用API

4.Map集合的遍历方式

1.Map集合的遍历方式一:键找值

2.Map集合的遍历方式二:键值对

3.Map集合的遍历方式三:Lambda

5.Map集合的实现类HashMap

6.Map集合的实现类LinkedHashMap

7.Map集合的实现类TreeMap


 

一、Set系列集合

Set系列集合特点

  • 无序:存取顺序不一致
  • 不重复:可以去除重复
  • 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素。

Set集合实现类特点

  •  HashSet : 无序、不重复、无索引。
  • LinkedHashSet:有序、不重复、无索引。
  • TreeSet:可排序、不重复、无索引。

1.HashSet

  • HashSet集合底层采取哈希表存储的数据。
  • 哈希表是一种对于增删改查数据性能都较好的结构。

HashSet底层原理

  • HashSet集合底层采取哈希表存储的数据。
  • 哈希表是一种对于增删改查数据性能都较好的结构。

哈希表的组成

  • JDK8之前的,底层使用数组+链表组成
  • JDK8开始后,底层采用数组+链表+红黑树组成。

在了解哈希表之前需要先理解哈希值的概念

哈希值

是JDK根据对象的地址,按照某种规则算出来的int类型的数值。

Object类的API

public int hashCode​():返回对象的哈希值

对象的哈希值特点

  • 同一个对象多次调用hashCode()方法返回的哈希值是相同的
  • 默认情况下,不同对象的哈希值是不同的。
public class Main {
    public static void main(String[] args) {
        String str="123";

        System.out.println(str.hashCode());
        System.out.println(str.hashCode());

        String str2="1234";

        System.out.println(str2.hashCode());
        System.out.println(str2.hashCode());
    }
}

2.LinkedHashSet

  • 有序、不重复、无索引。
  • 这里的有序指的是保证存储和取出的元素顺序一致
  • 原理:底层数据结构是依然哈希表,只是每个元素又额外的多了一个双链表的机制记录存储的顺序。

3.TreeSet

  • 不重复、无索引、可排序
  • 可排序:按照元素的大小默认升序(有小到大)排序。
  • TreeSet集合底层是基于红黑树的数据结构实现排序的,增删改查性能都较好。
  • 注意:TreeSet集合是一定要排序的,可以将元素按照指定的规则进行排序。

TreeSet集合默认的规则

  • 对于数值类型:Integer , Double,官方默认按照大小进行升序排序。
  • 对于字符串类型:默认按照首字符的编号升序排序。
  • 对于自定义类型如Student对象,TreeSet无法直接排序。

自定义排序规则

TreeSet集合存储对象的的时候有2种方式可以设计自定义比较规则

  • 方式一  让自定义的类(如学生类)实现Comparable接口重写里面的compareTo方法来定制比较规则。
  • 方式二 TreeSet集合有参数构造器,可以设置Comparator接口对应的比较器对象,来定制比较规则。

1.  如果希望元素可以重复,又有索引,索引查询要快?

用ArrayList集合,基于数组的。(用的最多)

2.  如果希望元素可以重复,又有索引,增删首尾操作快?

用LinkedList集合,基于链表的。

3.  如果希望增删改查都快,但是元素不重复、无序、无索引。

用HashSet集合,基于哈希表的。

4.  如果希望增删改查都快,但是元素不重复、有序、无索引。

用LinkedHashSet集合,基于哈希表和双链表。

5.  如果要对对象进行排序。

用TreeSet集合,基于红黑树。后续也可以用List集合实现排序。

二、补充知识

1.可变参数

可变参数

  • 可变参数用在形参中可以接收多个数据。
  • 可变参数的格式:数据类型...参数名称

可变参数的作用

  • 接收参数非常灵活,方便。可以不接收参数,可以接收1个或者多个参数,也可以接收一个数组
  • 可变参数在方法内部本质上就是一个数组。

可变参数的注意事项:

1.一个形参列表中可变参数只能有一个

2.可变参数必须放在形参列表的最后面

public class Test {
    public static void main(String[] args) {
       test(0);
       System.out.println("---------------------");
       test(1,2);
        System.out.println("---------------------");
       test(1,3,5,7);
    }


    public static void test(int... num) {
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }


    }

}

2.集合工具类Collections

Collections集合工具类

  • java.utils.Collections:是集合工具类
  • 作用:Collections并不属于集合,是用来操作集合的工具类。

Collections常用的API

方法名称

说明

public static <T> boolean addAll(Collection<? super T> c, T... elements)

给集合对象批量添加元素

public static void shuffle(List<?> list) 

打乱List集合元素的顺序

Collections排序相关API

使用范围:只能对于List集合的排序。

排序方式1:

方法名称

说明

public static <T> void sort(List<T> list)

将集合中元素按照默认规则排序

注意:本方式不可以直接对自定义类型的List集合排序,除非自定义类型实现了比较规则Comparable接口。

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"98","5","2","7","3","1");
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);

    }

排序方式2:

方法名称

说明

public static <T> void sort(List<T> list,Comparator<? super T> c)

将集合中元素按照指定规则排序

 三、Map集合体系

1.Map集合的概述

Map集合概述和使用

  • Map集合是一种双列集合,每个元素包含两个数据。
  • Map集合的每个元素的格式:key=value(键值对元素)。
  • Map集合也被称为“键值对集合”。

Map集合整体格式:

  • Collection集合的格式: [元素1,元素2,元素3..]
  • Map集合的完整格式:{key1=value1 , key2=value2 , key3=value3 , ...}

2.Map集合体系特点

Map集合体系

说明

  • 使用最多的Map集合是HashMap。
  • 重点掌握HashMap , LinkedHashMap , TreeMap。其他的后续理解。 

Map集合体系特点

  • Map集合的特点都是由键决定的。
  • Map集合的键是无序,不重复的,无索引的,值不做要求(可以重复)。
  • Map集合后面重复的键对应的值会覆盖前面重复键的值。
  • Map集合的键值对都可以为null。

Map集合实现类特点

  • HashMap:元素按照键是无序,不重复,无索引,值不做要求。(与Map体系一致)
  • LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。
  • TreeMap:元素按照建是排序,不重复,无索引的,值不做要求。

3.Map集合常用API

Map集合

  • Map是双列集合的祖宗接口,它的功能是全部双列集合都可以继承使用的。

Map API如下:

方法名称

说明

V put(K key,V value)

添加元素

V remove(Object key)

根据键删除键值对元素

void clear()

移除所有的键值对元素

boolean containsKey(Object key)

判断集合是否包含指定的键

boolean containsValue(Object value)

判断集合是否包含指定的值

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中键值对的个数

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //1.V put(K key,V value) 添加元素
        map.put("java",1);
        map.put("html",12);
        map.put("css",21);
        map.put("rust",3);
        map.put("js",9);
        System.out.println(map);
        System.out.println("-------------------------");
        //2.V remove(Object key)	根据键删除键值对元素
        map.remove("java");
        System.out.println(map);
        System.out.println("-------------------------");
        //3.void clear()	移除所有的键值对元素
//        map.clear();
//        System.out.println(map);
//        System.out.println("-------------------------");
        //4. boolean containsKey(Object key)	判断集合是否包含指定的键
        System.out.println(map.containsKey("java"));
        System.out.println(map.containsKey("js"));
        System.out.println("-------------------------");
        //5.boolean containsValue(Object value)	判断集合是否包含指定的值
        System.out.println(map.containsValue(12));
        System.out.println("-------------------------");
        //6. boolean isEmpty()	判断集合是否为空
        System.out.println(map.isEmpty());
        System.out.println("-------------------------");
        //7. int size()	集合的长度,也就是集合中键值对的个数
        System.out.println(map.size());


    }




}

4.Map集合的遍历方式

Map集合的遍历方式有:3种。

  • 方式一:键找值的方式遍历:先获取Map集合全部的键,再根据遍历键找值。
  • 方式二:键值对的方式遍历,把“键值对“看成一个整体,难度较大。
  • 方式三:JDK 1.8开始之后的新技术:Lambda表达式。

1.Map集合的遍历方式一:键找值

  • 先获取Map集合的全部键的Set集合。
  • 遍历键的Set集合,然后通过键提取对应值。

键找值涉及到的API:

方法名称说明
Set<K> keySet()获取所有键的集合
V get(Object key)根据键获取值
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //1.V put(K key,V value) 添加元素
        map.put("java",1);
        map.put("html",12);
        map.put("css",21);
        map.put("rust",3);
        map.put("js",9);
        System.out.println(map);

        Set<String> keys = map.keySet();
        for (String key : keys) {
            Integer value = map.get(key);
            System.out.println(key+"----->"+value);
        }

    }

2.Map集合的遍历方式二:键值对

  • 先把Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型了。
  • 遍历Set集合,然后提取键以及提取值。

键值对涉及到的API:

方法名称说明
Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合
K  getKey()获得键
V  getValue()获取值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //1.V put(K key,V value) 添加元素
        map.put("java", 1);
        map.put("html", 12);
        map.put("css", 21);
        map.put("rust", 3);
        map.put("js", 9);
        System.out.println(map);

        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+"----->"+value);
        }
        }

    }


3.Map集合的遍历方式三:Lambda

得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。

Map结合Lambda遍历的API

方法名称

说明

default void forEach(BiConsumer<? super K, ? super V> action)

结合lambda遍历Map集合

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //1.V put(K key,V value) 添加元素
        map.put("java", 1);
        map.put("html", 12);
        map.put("css", 21);
        map.put("rust", 3);
        map.put("js", 9);
        System.out.println(map);

        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String key, Integer value) {
                System.out.println(key+"----->"+value);
            }
        });


}

 }

代码简化一下:

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //1.V put(K key,V value) 添加元素
        map.put("java", 1);
        map.put("html", 12);
        map.put("css", 21);
        map.put("rust", 3);
        map.put("js", 9);
        System.out.println(map);

        map.forEach( (key,  value) ->{
                System.out.println(key+"----->"+value);
        });


}

 }

5.Map集合的实现类HashMap

 说明

  • 使用最多的Map集合是HashMap。
  • 重点掌握HashMap , LinkedHashMap , TreeMap。其他的后续理解。

HashMap的特点

  • HashMap是Map里面的一个实现类。特点都是由键决定的:无序、不重复、无索引
  • 没有额外需要学习的特有方法,直接使用Map里面的方法就可以了。
  • HashMap跟HashSet底层原理是一模一样的,都是哈希表结构,只是HashMap的每个元素包含两个值而已。

实际上:Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。

HashMap 是 Java 中的一个集合类,它用来存储键值对。它实现了 Map 接口,可以存储不同类型的键和值,并且允许 null 值。在 HashMap 中,键是唯一的,值可以重复。

HashMap 中最常用的方法包括:

  • put(key, value):将键值对添加到 HashMap 中。
  • get(key):获取指定键对应的值。
  • remove(key):删除指定键对应的键值对。
  • containsKey(key):判断 HashMap 是否包含指定的键。
  • keySet():返回 HashMap 中所有键组成的 Set 集合。
    public static void main(String[] args) {
        // 创建一个名为capitalCities的HashMap对象
        HashMap<String, String> capitalCities = new HashMap<String, String>();

        // 添加键和值(国家,城市)
        capitalCities.put("England", "London");
        capitalCities.put("Germany", "Berlin");
        capitalCities.put("Norway", "Oslo");
        capitalCities.put("USA", "Washington DC");

        // 通过使用键访问值
        System.out.println("英格兰的首都是 " + capitalCities.get("England"));

        // 删除一个键和值
        capitalCities.remove("Norway");

        // 打印键
        System.out.println("键: " + capitalCities.keySet());

        // 检查一个键是否在HashMap中
        System.out.println("capitalCities是否包含Norway作为键? " + capitalCities.containsKey("Norway"));
    }
英格兰的首都是 London
键: [USA, England, Germany]
capitalCities是否包含Norway作为键? false

6.Map集合的实现类LinkedHashMap

LinkedHashMap是Java集合框架中的一种Map实现,它继承自 HashMap 类,底层使用双向链表维护元素的顺序。特点是能够保持插入顺序,即遍历顺序与插入顺序相同,同时也支持按照访问顺序排序,即根据元素最近被访问的时间排序。其键值对是唯一的,键和值都可以为null。 对于访问顺序,可以通过构造函数或调用 afterNodeAccess、beforeNodeInsertion 等访问方法来配置。此外,LinkedHashMap 还实现了 removeEldestEntry 方法,它的作用是当元素个数超过指定阈值时,删除最不常访问的元素。

LinkedHashMap类实现了Map接口,使用双向链表维护插入顺序。具有如下主要方法:

  1. void clear():从此映射中删除所有映射关系。
  2. boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回true。
  3. boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回true。
  4. Set<Entry<K,V>> entrySet():返回此映射中所包含的映射关系的Set视图。
  5. V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。
  6. boolean isEmpty():如果此映射未包含键-值映射关系,则返回true。
  7. Set<K> keySet():返回此映射中包含的键的Set视图。
  8. V put(K key, V value):将指定的值与此映射中的指定键关联。
  9. void putAll(Map<? extends K,? extends V> m):将指定映射中的所有映射关系复制到此映射中。
  10. V remove(Object key):从此映射中移除指定键的映射关系(如果存在)。
  11. int size():返回此映射中的键-值映射关系数。
  12. Collection<V> values():返回此映射中包含的值的Collection视图。

注意:LinkedHashMap是非线程安全的。

LinkedHashMap集合可以保持插入顺序,如果已经存在的键再次被放入,那么会把原来对应的值覆盖掉。以下是一个简单的例子:

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapDemo {

    public static void main(String[] args) {
        Map<String, Integer> map = new LinkedHashMap<>(); // 创建 LinkedHashMap 对象
        map.put("apple", 1); // 插入数据
        map.put("banana", 2);
        map.put("orange", 3);
        map.put("apple", 4); // 覆盖相同键的值
        for (Map.Entry<String, Integer> entry : map.entrySet()) { // 遍历输出
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}
apple: 4
banana: 2
orange: 3

7.Map集合的实现类TreeMap

TreeMap 是 Java 中的一种有序的数据结构,基于红黑树实现,可以根据键值进行排序。TreeMap 中存储的元素都是键值对(key-value),其中键是唯一的。

TreeMap集合概述和特点:

  • 由键决定特性:不重复、无索引、可排序
  • 可排序:按照键数据的大小默认升序(有小到大)排序。只能对键排序。
  • 注意:TreeMap集合是一定要排序的,可以默认排序,也可以将键按照指定的规则进行排序
  • TreeMap跟TreeSet一样底层原理是一样的。

TreeMap集合自定义排序规则有2种

  • 类实现Comparable接口,重写比较规则。
  • 集合自定义Comparator比较器对象,重写比较规则。
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        // 创建一个TreeMap对象,指定键的类型为String,值的类型为Integer
        TreeMap<String, Integer> map = new TreeMap<>();

        // put()方法向TreeMap中添加元素
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("orange", 3);

        // 通过遍历TreeMap来获取元素
        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }
    }
}

JAVA——集合进阶(Collection、List、Set、泛型、Map、Collections) Collection 1.1 集合知识回顾 集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。 1.2 集合类体系结构 1.3 Collection集合概述和使用 Collection集合概述 (1)是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素 (2)JDK不提供此接口的任何直接实现,它提供更具体的子接口(Set/List)实现。 创建Collection集合的对象 (1)多态的方式 (2)具体的实现类ArrayList package c. 阅读详情

相关推荐

断点回归(regression discontinuity design)学习笔记

本篇博文主要是对断点回归的一些学习和总结~ 学习材料如下: 1 断点回归设计RDD分类与操作案例 2 RDD断点回归, Stata程序百科全书式的宝典 3 断点回归设计的前沿研究现状, RDD 4 让“跳跃”更有意义:断点回归设计(RDD) 5 Stata: 断点回归 (RDD) 教程 6 怎么用通俗的语言解释断点回归?它与DID的区别是什么 7 Watering Down Environmental Regulation in China,Guojun He, Shaoda Wang, Bing Zhan

Claire_chen_jia的博客 9万+

Java[集合] Map 和 Set

哈喽,大家好~ 我是保护小周ღ,本期为大家带来的是 Java Map 和 Set 集合详细介绍了两个集合的概念及其常用方法,感兴趣的朋友可以来学习一下。更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘

保护小周ღ的博客 2245

UVM环境复位--stop_sequences()

在UVM验证环境中, stop_sequences是一个用于强制终止所有正在运行的 Sequence 的方法,通常用于动态控制激励生成流程。1.通过uvm_config_db传递事件和严格的同步机制,此方案符适用于复杂复位场景和动态测试控制。组件耦合:Driver 和 Sequence 不再直接依赖env,通过标准接口通信。竞争条件:确保 Driver 完成清理后再终止 Sequence。代码健壮性:使用非阻塞操作和事件监听,避免死锁。

qq_42779035的博客 3014

Map 和 Set (Java详细讲解)看我就够了

Map 和 Set 概念: Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的 搜索方式有: 1.直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢 2.二分查找,时间复杂度为,但搜索前必须要求序列是有序的 上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如: 1.根据姓名查询考试成绩 2.通讯录,即根据姓名查询联系方式 3.不重复集合,即需...

qq_46116963的博客 5425

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 406

K210学习笔记(八)——人脸检测和人脸识别

前言 人脸检测是人脸识别算法的第一步,人脸识别过程主要分为人脸图像获取、人脸检测、人脸配准、人脸表征以及人脸图像匹配与识别。人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形(椭圆)在图像中的坐标,可能还包括姿态如倾斜角度等信息。人脸检测在安防监控,人证比对,人机交互,社交和娱乐等方面有很强的应用价值。 人脸识别是在人脸检测的基础上除了检测到人脸的位置以外, 还可以识别到这个人是谁,利用分析比较是基于人的脸视觉部特征信息进行身份鉴识别的计算机一种生物识别技术。 一、KPU模块方法 1、

Thousand_drive的博客 1万+

JAVA数据结构之Map和Set

Map和Set的常用方法

达斯米奇的博客 1780

PADS导出PCB正反面丝印为CAD文件的方法

本文介绍如何将PADS绘制的pcb格式的PCB文件顶底层丝印及板框导出为CAD的dxf文件格式,并且将底层丝印进行镜像为正常视角

luguodeyo的博客 3294

二十三、JAVA中的Set和Map

JAVA中的Set和Map1. Set接口1.1 概述1.2 特点1.3 常用方法1.4 案例 测试常用方法2. HashSet2.1 概述2.2 案例 获取HashSet里的元素3. Map接口3.1 概述3.2 特点3.3 继承结构3.4 常用方法3.5 案例 测试常用方法4. HashMap4.1 概述4.2 案例 读取HashMap的数据4.3 案例 字符串中的字符统计4.4 HashMap扩容 1. Set接口 1.1 概述 一个不包含重复元素的 collection。 数据无序(因为set集合没

丁花的博客 1002

数据仓库实践:从ITR流程讲指标体系建设

从 ITR 流程或者其他客服反馈流程的考核过程可见,实际工作中不可能只通过单个指标评价一个业务过程,需要从多个维度梳理业务,并把多个高度相关的指标组织起来,以避免只考虑其中某个指标从而摧毁整个业务过程的结果,指标体系=指标+体系。

the_singing_towers的博客 2265

166、Sim2Real中的强化学习:域随机化与鲁棒策略

第二,训练时监控每个随机化维度对策略梯度的贡献,如果某个维度对loss的方差贡献极小,说明策略已经忽略它了,要么加大范围,要么删掉。第四,如果条件允许,用真实数据来校准随机化分布——采集真机上的传感器数据,拟合出参数分布,再把这个分布作为随机化的采样依据,这比拍脑袋定范围靠谱得多。动态随机化是很多人忽略的维度。域随机化的核心思想说白了就一句话:别去精确建模现实,而是把仿真环境本身变成一个随机分布的集合,让策略在“各种乱七八糟的物理参数”里都见过世面,这样到了真机上,不管现实落在哪个参数区间,策略都能兜住。

sundong_81的博客 27

Java进阶,Set集合,Map集合

Java进阶,Set集合,Map集合

qiaoqiaoqiaoyezi的博客 526

倍福CX9020(WINCE 7)控制器使用方法和操作

CX9020系列是倍福控制器中较为经济的,操作系统为Windows Embedded Compact 7(简称WINCE7或WINEC7),相对高端控制器(WINES7以上系统),操作系统古老而简洁,上位机软件的编写困难很多,本文是笔者在使用过程中摸索的流程,旨在为CX9020系列的新用户提供参考,也可供其他CE系统的控制器参考。本文中大部分截图采用倍福中国的培训文档,这是由于笔者是在流程走通后再写这篇文章,不想再恢复出厂设置走一遍截图。因笔者在写这篇文章时使用倍福控制器经验并不丰富,难免有纰漏,请读者批评

weixin_41883890的博客 4287

JAVA集合进阶(Set、Map集合)

使用迭代器遍历集合时,可能存在并发修改异常。我们先把这个异常用代码演示出来,再解释一下为什么会有这个异常产生list.add("王麻子");list.add("小李子");list.add("李爱花");list.add("张全蛋");list.add("晓李");list.add("李玉刚");// [王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]​//需求:找出集合中带"李"字的姓名,并从集合中删除if(name.contains("李")){

是程序喵呀 1582

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java 进阶集合Set、Map(二)

set集合、map集合,Java必备进阶知识点

80后大叔爱学习 732

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java进阶(七)Set系列集合、Map集合体系

Java进阶(七)Set系列集合、Map集合体系

Léon 764

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java进阶笔记-集合(Set、Collections、Map、集合嵌套)

Set系列集合特点无序:存取顺序不一致【只无序一次,即第一次运行后元素无序,之后再运行也是第一次无序的顺序】可以去除重复。没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素。Set集合实现类特点HashSet : 无序、不重复、无索引。有序、不重复、无索引。排序、不重复、无索引。Set集合的功能上基本上与Collection的API一致。Collections集合工具类:是集合工具类作用:Collections并不属于集合,是用来操作集合的工具类。

Even的博客 529

16Java集合进阶(Set、Map集合、可变参数、斗地主案例)

Set系列集合、HashSet、 LinkedHashSet、 可变参数、Map集合、遍历方式

qq_56947957的博客 1865

java进阶开发-----Set集合、Map集合(接java集合)

本次笔记为b站视频笔记

weixin_65489884的博客 224

容器集合(集合的进阶,Collection,List,Set,Map,Map集合的综合使用--斗地主案列,并发修改异常,列表迭代器,Java面试中几个集合面试题)

集合的体系结构: 我们先来了解下,集合类的特点: 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。 集合类的体系图: 通过图,我们可以看到: Collection集合: Collection集合 是单例集合的顶层接口。但是,JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现,所以可以用多态的方式以及具体的实现类如:ArrayList,LinkedList, TreeSet,HashSet等来创建Collection对象。比如:Collect.

ck_67的博客 1263

JAVA进阶学习笔记(4):集合(Collection、List、Set、Map、Collections)

1.集合框架概述 集合、数组都是对多个数据进行存储操作的结构,简称Java容器。Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。 此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) 1.1 数组存储的特点 一旦初始化以后,其长度就确定了。 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。 1.2 数组存储的弊端 一旦初始化以后,其长度就不可修改。 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常

LeavingBook的博客 462

day16--集合进阶(Set、Map集合)

最后,将所有的Collection集合总结一下,要求大家掌握每一种集合的特点,以及他们的体系结构。好了,关于Collection集合,到这里就学习完了。各位同学,前面我们已经把单列集合学习完了,接下来我们要学习的是双列集合。首先我们还是先认识一下什么是双列集合。所谓双列集合,就是说集合中的元素是一对一对的。Map集合中的每一个元素是以key=value的形式存在的,一个key=value就称之为一个键值对,而且在Java中有一个类叫Entry类,Entry的对象用来表示键值对对象。

ZHUSHANGLIN的博客 1069

Java进阶two 集合进阶与Stream流

Java进阶课程的第一篇,集合进阶与Stream流相关内容。学习完基础之后就是进阶的内容了。

weixin_74735725的博客 432

Java进阶总结——集合

说明对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。集合接口6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。实现类8个实现类(实线表示),对接口的具体实现。Collection接口是一组允许重复的对象。...

Marathon_X的博客 205

day07=集合进阶(Set、Map集合)

最后,将所有的Collection集合总结一下,要求大家掌握每一种集合的特点,以及他们的体系结构。好了,关于Collection集合,到这里就学习完了。各位同学,前面我们已经把单列集合学习完了,接下来我们要学习的是双列集合。首先我们还是先认识一下什么是双列集合。所谓双列集合,就是说集合中的元素是一对一对的。Map集合中的每一个元素是以key=value的形式存在的,一个key=value就称之为一个键值对,而且在Java中有一个类叫Entry类,Entry的对象用来表示键值对对象。

weixin_70414390的博客 197

——集合进阶(Set、Map集合) 一、Set系列集合 1.1 认识Set集合的特点Set集合是属于Collection体系下的另一个分支,它的特点如下图所示!

最后,将所有的Collection集合总结一下,要求大家掌握每一种集合的特点,以及他们的体系结构。好了,关于Collection集合,到这里就学习完了。各位同学,前面我们已经把单列集合学习完了,接下来我们要学习的是双列集合。首先我们还是先认识一下什么是双列集合。所谓双列集合,就是说集合中的元素是一对一对的。Map集合中的每一个元素是以key=value的形式存在的,一个key=value就称之为一个键值对,而且在Java中有一个类叫Entry类,Entry的对象用来表示键值对对象。

QYQ_4123的博客 142
上一篇: 【腾讯云FinOps Crane 集训营】初识 FinOps Crane
下一篇: 【Spring篇】AOP案例
热爱编程的小白白
热爱编程的小白白 新星计划导师 新星计划导师
博客等级 码龄5年 11万+粉丝 243原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱编程的小白白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值