Map集合特点、遍历方式、TreeMap排序及Collections和Arrays

目录

​编辑

一、集合框架

二、 Map集合

特点

遍历方式

HashMap与Hashtable的区别

TreeMap

Collections

Arrays


一、集合框架

二、 Map集合

Map集合是一种键值对的集合,其中每个键对应一个值。在Java中,Map接口定义了一种将键映射到值的数据结构。常见的实现类包括HashMap、TreeMap和LinkedHashMap。

无序、以键值对的形式添加元素,键不能重复,值可以重复,它没有继承Collection接口。

关于Map集合的常见操作:

  1. 添加键值对:使用put(key, value)方法将键值对添加到Map中。
  2. 获取值:使用get(key)方法根据键获取对应的值。
  3. 删除键值对:使用remove(key)方法根据键删除对应的键值对。
  4. 判断是否包含键:使用containsKey(key)方法判断Map中是否包含指定的键。
  5. 获取所有键或值的集合:使用keySet()方法获取所有键的集合,使用values()方法获取所有值的集合。

特点

  • 无序

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
    System.out.println(map);
  • 以键值对方式存储数据

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
  • 键唯一,值不唯一(键相同的情况下,值被覆盖

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
    map.put("zs", "1234");
    System.out.println(map);

遍历方式

  • 获取所有的Key

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
    //获取Map集合中所有的键
    Set<String> keys = map.keySet();
    for (String key : keys) {System.out.println(key);
    }
  • 获取所有的Value

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
    //获取Map集合中所有的值
    Collection<String> values = map.values();
    for (String value : values) {System.out.println(value);
    }
  • 获取所有的键值对

    Map<String,String> map=new HashMap<String,String>();
    map.put("zs", "123");
    map.put("ls", "456");
    map.put("ww", "789");
    //获取Map集合中所有的键值对
    Set<Entry<String, String>> entrySets = map.entrySet();
    for (Entry<String, String> entry : entrySets) {System.out.println(entry.getKey()+" "+entry.getValue());
    }

HashMap与Hashtable的区别

  1. HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

  2. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

  3. HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

  4. Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

就HashMap与HashTable主要从三方面来说。

  • 历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现;

  • 同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的;

  • :只有HashMap可以让你将空值作为一个表的条目的key或value

 

TreeMap

  • 默认升序排序

    Map<String,Object> map=new TreeMap<String,Object>();
    map.put("2","ls");
    map.put("1","ww");
    map.put("4","zs");
    map.put("3","xl");map.forEach((k,v)->{System.out.println(k+"="+v);
    });
  • reverseOrder降序排序

    Map<String,Object> map=new TreeMap<>(Comparator.reverseOrder());
    map.put("2","ls");
    map.put("1","ww");
    map.put("4","zs");
    map.put("3","xl");map.forEach((k,v)->{System.out.println(k+"="+v);
    });
  • Value值排序

    Map<String,Object> map=new TreeMap<String,Object>();
    map.put("2","ls");
    map.put("1","ww");
    map.put("4","zs");
    map.put("3","xl");//按照map中的value属性排序
    List<Map.Entry<String,Object>> lst=new ArrayList<Map.Entry<String,Object>>(map.entrySet());Collections.sort(lst, new Comparator<Map.Entry<String, Object>>() {@Overridepublic int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {return -o1.getValue().toString().compareTo(o2.getValue().toString());}
    });lst.forEach(s->{System.out.println(s);
    });

 

Collections

Collections:工具类,提供一组静态方法操作Collection集合

Collections 是 Java 中的一个工具类,提供了一系列静态方法来操作集合类(如List、Set、Map等)。它包含了很多常用的方法,如排序、查找、遍历等,可以方便地对集合进行操作。

Collections 类的常用方法示例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Main {public static void main(String[] args) {List<Integer> numbers = new ArrayList<>();numbers.add(3);numbers.add(1);numbers.add(2);// 排序Collections.sort(numbers);System.out.println("排序后的列表:" + numbers);// 反转Collections.reverse(numbers);System.out.println("反转后的列表:" + numbers);// 查找最大值和最小值int max = Collections.max(numbers);int min = Collections.min(numbers);System.out.println("最大值:" + max);System.out.println("最小值:" + min);// 随机打乱顺序Collections.shuffle(numbers);System.out.println("随机打乱后的列表:" + numbers);}
}

Arrays

Arrays:工具类,提供了一组静态方法操作数组

Arrays 是一种数据结构,用于存储相同类型的元素。它们在许多编程语言中都有广泛的应用,可以通过索引访问数组中的元素。

在大多数编程语言中,数组的索引是从0开始的。例如,如果有一个包含5个元素的数组,它们的索引将分别是0、1、2、3和4。

在Java中,创建一个整型数组并初始化它的方式如下:

int[] myArray = {1, 2, 3, 4, 5};

你可以通过索引访问数组中的元素,例如:

System.out.println(myArray[2]); // 输出 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习-qt-Day3

嵌入式学习-qt-Day3 一、思维导图 二、作业 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳…

「Java开发指南」MyEclipse如何支持Spring Scaffolding?(三)

在上文中&#xff08;点击这里回顾>>&#xff09;&#xff0c;主要为大家介绍了CRUD Scaffolding&#xff0c;本文将继续介绍应用程序的分层、代码助手等。 MyEclipse v2023.1.2离线版下载 3. 应用程序的分层 应用程序分层是应用程序开发领域中非常常见的体系结构方法…

C++之类作用域

目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…

c++学习记录 STL基本概念

1、STL基本概念 STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;STL广义上分为&#xff1a;容器&#xff08;container&#xff09;算法&#xff08;algorithm&#xff09;迭代器&#xff08;iterator&#xff09;容器和算法之间通过迭代器进行无…

线程共享和非共享的资源及线程优缺点

注意&#xff1a;共享的内存地址空间中不包括栈&#xff1b;共享文件描述符表&#xff0c;表示&#xff0c;同一进程中线程可以操作同一文件。

猫头虎分享已解决Bug || TypeError: Cannot read property ‘props‘ of undefined (React)

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

c++的类型转换方法

一、静态类型转换&#xff08;static_cast&#xff09; 静态类型的转换主要用于基本类型之间的转换&#xff0c;比如int类型转换为double类型。但是static_cast也可以支持上下行的转换&#xff08;存在继承关系之间的转换&#xff09; 基本类型之间的转换举例 上下行转换的举…

金航标电子位于广西柳州鹿寨县天线生产基地于大年正月初九开工了!!!

金航标kinghelm&#xff08;www.kinghelm.com.cn&#xff09;总部位于中国深圳市&#xff0c;兼顾技术、成本、管理、效率和可持续发展。东莞塘厦实验室全电波暗室、网络分析仪、高低温测试柜等仪器设备齐全&#xff0c;可进行高低温、双85等测试&#xff0c;独立完成产品的检测…

数字化转型导师坚鹏:数据安全法解读与政府数字化转型

网络安全法、数据安全法、个人信息保护法解读与政府数字化转型 课程背景&#xff1a; 很多机构存在以下问题&#xff1a; 不清楚网络安全法、数据安全法、个人信息保护法立法背景&#xff1f; 不知道如何理解网络安全法、数据安全法、个人信息保护法政策&#xff1f; 不…

高级RAG:使用RAGAs + LlamaIndex进行RAG评估,包括原理、图和代码

原文地址&#xff1a;Using RAGAs LlamaIndex for RAG evaluation 2024 年 2 月 5 日 如果您已经为实际的业务系统开发了检索增强生成&#xff08;Retrieval Augmented Generation, RAG&#xff09;应用程序&#xff0c;那么您可能会关心它的有效性。换句话说&#xff0c;您…

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…

【前端素材】推荐优质后台管理系统Start Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;它通常作为一个独立的后台界面存在&#xff0c;供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能&#xff1a; 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

nios ii开发随笔

错误一&#xff1a; d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_64-mingw32/bin/../lib/gcc/nios2-elf/5.3.0/../../../../../H-x86_64-mingw32/nios2-elf/bin/ld.exe: test.elf section .text will not fit in region ram_oc_xzs d:/intelfpga/17.1/nios2eds/bin/gnu/h-x86_6…

鸿蒙OS应用开发之显示图片组件6

前面学习了怎么样让图片合适的大小来显示出来,达到最佳的布局显示图片。现在来学习PixelMap图片显示。PixelMap图片是指图片解码后无压缩的位图,用于图片显示或图片处理。 由于PixelMap图片是一种无压缩的图片,比较适合图片处理,比如从网络上加载图片之后,再进行处理再显示…

STM32-启用蜂鸣器

目录 1 、电路构成及原理图 2、编写实现代码 main.c beep.c beep.h 3、代码讲解 4、 烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板&#xff0c;此笔记基于这款开发板记录。 1 、电路构成及原理图 首先&#xff0c;通过朗峰 F1 开…

SpringBoot 3 新特性

目录 1. GraalVM2. 支持虚拟线程3. HTTP Interface 1. GraalVM 使用GraalVM将SpringBoot应用程序编译成本地可执行的镜像文件&#xff0c;可以显著提升启动速度、峰值性能以及减少内存应用。传统的应用都是编译成字节码&#xff0c;然后通过JVM解释并最终编译成机器码来运行&a…

ELK入门(二)- springboot整合ES

springboot整合elasticsearch 引用依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

TT语音×个推:流失预测准确率超90%,撬动存量增长个推GeTui 2024-02-23 09:50 浙江

当移动互联网进入存量时代&#xff0c;如何更高效地进行用户全生命周期管理、提升用户生命周期价值&#xff0c;变得尤为重要。TT语音是国内领先的兴趣社交平台&#xff0c;累计注册用户数高达数亿。为了进一步盘活存量用户价值&#xff0c;TT语音从2019年起便与个推合作&#…

三分钟快速搭建家纺行业小程序商城:轻松实现电子商务梦想

随着互联网的普及和移动设备的广泛使用&#xff0c;越来越多的商业活动正在向数字化转型。在这个过程中&#xff0c;小程序商城作为一种新型的电子商务模式&#xff0c;正逐渐受到商家的青睐。本文将通过具体步骤&#xff0c;指导读者如何开发一个纺织辅料小程序商城。 一、选择…

EarMaster Pro 7 简体中文破解版下载 v7.2.0.42 电脑版

软件介绍 EarMaster Pro 简体中文破解版是一款由丹麦皇家音乐学院官方制作的多功能音乐品鉴教育软件&#xff0c;软件具有丰富的功能&#xff0c;它可以自定义培训课程&#xff0c;针对性地训练音准、节奏、和声等音乐要素&#xff0c;用户可以根据自身需求和水平选择不同难度…