【Java高级编程】Java常用类

news2024/11/16 13:36:43

在这里插入图片描述

Java常用类

      • 1、字符串相关的类
        • 1.1、字符串相关的类:String
        • 1.2、字符串相关的类:String常用方法
        • 1.3、String与基本数据类型、包装类之间的转换
        • 1.4、String与char[]之间的转换
        • 1.5、String与byte[]之间的转换
        • 1.6、String、StringBuffer、StringBuilder三者的异同?
        • 1.7、StringBuffer源码分析
        • 1.8、StringBuffer类的常用方法
        • 1.9、对比String、StringBuffer、StringBuilder三者的效率
        • 1.10、String与StringBuffer、StringBuilder之间的转换
      • 2、JDK 8之前的日期时间API
        • 2.1、java.lang.System类
        • 2.2、java.util.Date类
        • 2.3、java.text.SimpleDateFormat类
        • 2.4、java.util.Calendar类
      • 3、JDK 8中新日期时间API
        • 3.1、新日期时间API出现的原因
        • 3.2、LocalDate、LocalTime、LocalDateTime类
        • 3.3、瞬时:Instant
        • 3.4、java.time.format.DateTimeFormatter类
      • 4、Java比较器
        • 4.1、方式一:自然排列:java.lang.Comparable
        • 4.2、方式二:定制排序:java.util.Comparator
      • 5、System类
      • 6、Math类
      • 7、BigInteger与BigDecimal
        • 7.1 BigInteger类
        • 7.2 BigDecimal类

1、字符串相关的类

1.1、字符串相关的类:String

  • String声明为final的,不可被继承
  • String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口:表示String可以比较大小
  • String内部定义了final char[] value用于存储字符串数据
  • String:代表不可变的字符序列。简称:不可变性。
    • 1、当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值。
    • 2、当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值
    • 3、当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值
  • 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串声明在字符串常量池中
  • 字符串常量池中是不会存储相同内容的字符串的
/**
 *  String的实例化方式
 *  方式一:通过字面量定义的方式
 *  方式二:通过new + 构造器的方式
 *
 *  面试题:String s = new String("abc");方式创建对象,在内存中创建了几个对象?
 *  答:两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:"abc"
 */
@Test
public void test() {
    // 通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。
    String s1 = "javaEE";
    String s2 = "javaEE";
    // 通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值
    String s3 = new String("javaEE");
    String s4 = new String("javaEE");

    System.out.println(s1 == s2);// true
    System.out.println(s1 == s3);// false
    System.out.println(s1 == s4);// false
    System.out.println(s3 == s4);// false
};
  • 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
  • 只要其中有一个是变量,结果就在堆中。
  • 如果拼接的结果是调用intern()方法,返回值就在常量池中
String s1 = "hello";
String s2 = "world";
String s3 = "hello" + "world";
String s4 = s1 + "world";
String s5 = s1 + s2;
String s6 = (s1 + s2).intern();
final String s7 = "hello"; // 此时的s7是一个常量
String s8 = s7 + "world";

System.out.println(s3 == s4);// false
System.out.println(s3 == s5);// false
System.out.println(s4 == s5);// false
System.out.println(s3 == s6);// true
System.out.println(s3 == s8);// true

1.2、字符串相关的类:String常用方法

  • int length():返回字符串的长度:return value.length
  • char charAt(int index):返回某索引处的字符return value[index]
  • boolean isEmpty():判断是否是空字符串:return value.length == 0
  • String toLowerCase():使用默认语言环境,将String中的所有字符转换为小写
  • String toUpperCase():使用默认语言环境,将String中的所有字符转换为大写
  • String trim():返回字符串的副本,忽略首部空白和尾部空白
  • boolean equals(Object obj):比较字符串的内容是否相同
  • boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
  • String concat(String str):将指定字符串连接到此字符串的结尾。等价于用"+"
  • int compareTo(String anotherString):比较两个字符串的大小
  • String substring(int beginIndex):返回一个新的字符串,它是此字符串从beginIndex开始截取到最后的一个子字符串
  • String substring(int beginIndex, int endIndex):返回一个新的字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串
  • boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
  • boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
  • boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定的前缀开始
  • boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
  • int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
  • int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
  • int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
  • int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
  • String replace(char oldChar, char new Char):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的
  • String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
  • String replaceAll(String regex, String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串
  • String replaceFirst(String regex, String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串
  • boolean matches(String regex):告知此字符串是否匹配给定的正则表达式
  • String[] split(String regex):根据给定正则表达式的匹配拆分此字符串
  • String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中

1.3、String与基本数据类型、包装类之间的转换

  • String --> 基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)
  • 基本数据类型、包装类 --> String:调用String重载的valueOf(xxx)

1.4、String与char[]之间的转换

  • String --> char[]:调用String的toCharArray()
  • char[] --> String:调用String的构造器

1.5、String与byte[]之间的转换

  • String --> byte[]:调用String的getBytes()
  • byte[] --> String:调用String的构造器

1.6、String、StringBuffer、StringBuilder三者的异同?

  • String:不可变的字符序列;底层使用final char[]存储
  • StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
  • StringBuilder:可变的字符序列;JDK 5.0新增的,线程不安全的,效率高;底层使用char[]存储

1.7、StringBuffer源码分析

  • 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中
  • 指导意义:开发中建议大家使用:StringBuffer(int capacity) 或 StringBuilder(int capacity)
String str = new String(); // char[] value = new char[0];
String str1 = new String("abc"); // char[] value = new char[]{'a','c','c'};

StringBuffer sb1 = new StringBuffer(); // char[] value = new char[16];底层创建了一个长度是16的数组
System.out.println(sb1.length()); //0
sb1.append('a');//value[0] = 'a';
sb1.append('b');//value[1] = 'b';

StringBuffer sb2 = new StringBuffer("abc");//char[] value = new char["abc".length() + 16];

1.8、StringBuffer类的常用方法

  • StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
  • StringBuffer delete(int start, int end):删除指定位置的内容
  • StringBuffer replace(int start, int end, String str):把[start, end)位置替换为str
  • StringBuffer insert(int offset, xxx):在指定位置插入xxx
  • StringBuffer reverse():把当前字符序列逆转

1.9、对比String、StringBuffer、StringBuilder三者的效率

  • 从高到低排列:StringBuilder > StringBuffer > String

1.10、String与StringBuffer、StringBuilder之间的转换

  • String --> StringBufferr、StringBuilder:调用StringBuffer、StringBuilder构造器
  • StringBufferr、StringBuilder --> String:
    • 调用String构造器
    • StringBuffer、StringBuilder的toString()

2、JDK 8之前的日期时间API

2.1、java.lang.System类

  • System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

2.2、java.util.Date类

  • 表示特定的瞬间,精确到毫秒
  • 构造器:
    • Date():使用无参构造器创建的对象可以获取本地当前时间
    • Date(long date)
  • 常用方法
    • getTime():返回自1970年1月1日 00:00:00 GMT 以来此Date对象表示的毫秒数
    • toString():把此Date对象转换为以下的形式的String:dow mon dd hh:mm:ss zzz yyyy

2.3、java.text.SimpleDateFormat类

  • Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类
  • 格式化:
    • SimpleDateFormat():默认的模式和语言环境创建对象
    • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象
    • public String format(Date date):格式化时间对象date
  • 解析:
    • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期

2.4、java.util.Calendar类

  • Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
  • 获取Calendar实例的方法
    • 使用Calendar.getInstance()方法
    • 调用它的子类GregorianCalendar的构造器
  • 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY、MINUTE、SECOND
    • public void set(int field, int value)
    • public void add(int field, int amount)
    • public final Date getTime()
    • public final void setTime(Date date)
  • 注意
    • 获取月份时:一月是0,二月是1,以此类推,12月是11
    • 获取星期时:周日是1,周一是2,以此类推,周六是7

3、JDK 8中新日期时间API

3.1、新日期时间API出现的原因

  • 可变性:像日期和时间这样的类应该是不可变的
  • 偏移性:Date中的年份是从1900开始的,而月份都是从0开始
  • 格式化:格式化只对Date有用,Calender则不行
  • 此外,它们都不是线程安全的;不能处理闰秒等

3.2、LocalDate、LocalTime、LocalDateTime类

  • 它们的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。
  • 创建方法:
    • now() / now(ZoneId zone):静态方法,根据当前时间创建对象/指定时区的对象
    • of():静态方法,根据指定日期/时间创建对象
  • get类的方法:
    • getDayOfMonth()/getDayOfYear():获得月份天数(1-31)/获得年份天数(1-366)
    • getDayOfWeek():获得星期几(返回一个DayOfWeek枚举值)
    • getMonth():获得月份,返回一个Month枚举值
    • getMonthValue()/getYear():获得月份(1-12)/获得年份
    • getHour()/getMinute()/getSecond():获得当前对象对应的小时、分钟、秒
  • set类的方法:
    • withDayOfMonth()/withDayOfYear()/withMonth()/withYear():将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象
  • 操作类的方法:
    • plusDays()/plusWeeks()/plusMonths()/plusYears()/plusHours():向当前对象添加几天、几周、几个月、几年、几小时
    • minusMonths()/minusWeeks()/minusDays()/minusYears()/minusHours():从当前对象减去几月、几周、几天、几年、几小时

3.3、瞬时:Instant

  • 时间线上的一个瞬时点,同样的,在Java中也是从1970年开始,但以毫秒为单位
  • 常用方法:
    • now():静态方法,返回默认UTC时区的Instant类的对象
    • ofEpochMilli(long epochMilli):静态方法,返回在1970-01-01 00:00:00基础上加上指定毫秒数之后的Instant类的对象
    • atOffset(ZoneOffset offset):结合即时的偏移来创建一个OffsetDateTime
    • toEpochMilli():返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳

3.4、java.time.format.DateTimeFormatter类

  • 预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
  • 本地化相关的格式。如ofLocalizedDateTime(FormatStyle.LONG)
  • 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss E”)
  • 常用方法:
    • ofPattern(String pattern):静态方法,返回一个指定字符串格式的DateTimeFormatter
    • format(TemporalAccessor t):格式化一个日期、时间,返回字符串
    • parse(CharSequence test):将指定格式的字符序列解析为一个日期、时间

4、Java比较器

4.1、方式一:自然排列:java.lang.Comparable

  • Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序
  • 实现Comparable的类必须实现compareTo(Object obj)方法,两个对象即通过compareTo(Object obj)方法的返回值来比较大小。
    • 如果当前对象this大于形参对象obj,则返回正整数
    • 如果当前对象this小于形参对象obj,则返回负整数
    • 如果当前对象this等于形参对象obj,则返回零
  • 实现Comparable接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排列。

4.2、方式二:定制排序:java.util.Comparator

  • 当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用Comparator的对象来排序
  • 重写compare(Object o1, Object o2)方法,比较o1和o2的大小
    • 如果方法返回正整数,表示o1大于o2
    • 如果方法返回0,表示相等
    • 返回负整数,表示o1小于o2
  • 可以将Comparator传递给sort方法(如Collections.sort或Arrays.sort),从而允许在排序顺序上实现精确控制

5、System类

  • System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。
  • 成员变量:
    • in:标准输入流(键盘输入)
    • out:标准输出流(显示器)
    • err:标准错误输出流(显示器)
  • 成员方法:
    • native long currentTimeMillis():该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1日0时0分0秒所差的毫秒数。
    • void exit(int status):该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。
    • void gc():该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
    • String getProperty(String key):该方法的作用是获得系统中属性名为key的属性对应的值。
      • java.version:java运行时环境版本
      • java.home:java安装目录
      • os.name:操作系统的名称
      • os.version:操作系统的版本
      • user.name:用户的账户名称
      • user.home:用户的主目录
      • user.dir:用户的当前工作目录

6、Math类

  • abs:绝对值
  • acos,asin,atan,cos,sin,tan:三角函数
  • sqrt:平方根
  • pow(double a, double b):a的b次幂
  • log:自然对数
  • exp:e为底指数
  • max(double a, double b)
  • min(double a, double b)
  • random():返回0.0到1.0的随机数
  • long round(double a):double型数据a转换为long型(四舍五入)
  • toDegrees(double angrad):弧度–>角度
  • toRadians(double angdeg):角度–>弧度

7、BigInteger与BigDecimal

7.1 BigInteger类

  • java.math包的BigInteger可以表示不可变的任意精度的整数
  • 构造器:
    • BigInteger(String val):根据字符串构建BigInteger对象
  • 常用方法:
    • public BigInteger abs():返回此BigInteger的绝对值的BigInteger
    • BigInteger add(BigInteger val):返回其值为(this+val)的BigInteger
    • BigInteger subtract(BigInteger val):返回其值为(this-val)的BigInteger
    • BigInteger multiply(BigInteger val):返回其值为(this*val)的BigInteger
    • BigInteger divide(BigInteger val):返回其值为(this/val)的BigInteger。整数相除只保留整数部分
    • BigInteger remainder(BigInteger val):返回其值为(this%val)的BigInteger
    • BigInteger[] divideAndRemainder(BigInteger val):返回包含(this/val)后跟(this%val)的两个BigInteger的数组
    • BigInteger pow(int exponent):返回其值为(this的exponent次方)的BigInteger

7.2 BigDecimal类

  • BigDecimal类支持不可变的、任意精度的有符号十进制定点数
  • 构造器:
    • public BigDecimal(double val)
    • public BigDecimal(String val)
  • 常用方法:
    • public BigDecimal add(BigDecimal augend)
    • public BigDecimal subtract(BigDecimal subtrahend)
    • public BigDecimal multiply(BigDecimal multiplicand)
    • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

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

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

相关文章

element-plus中的el-table如何动态合并行(复制粘贴即可使用 亲测有效!)

demo场景: 一个 table,由5列组成,其 prop 分别为’resource_name’, ‘scene_name’, ‘type’, ‘content’, ‘desc’,渲染 table 的数据来源于接口。现在需要将 propdesc的这一列,按照resource_name 相等时进行合并…

使用EVPN构建二层VPN

一、业务背景 EVPN实例用于将EVPN路由与公网路由隔离。不同EVPN实例的路由之间也是相互隔离的。在所有EVPN组网方案中,都需要配置EVPN实例。 二、业务拓扑 三、配置步骤 1、配置基本接口IP 2、配置核心网IGP和LDP 3、配置PE和PE之间的BGP EVPN邻居关系 4、配置EVPN的源地址 …

Linux5.10 NoSQL 之 Redis配置与优化及数据类型

文章目录 计算机系统5G云计算第四章 LINUX NOSQL 之 Redis配置与优化及数据类型一、关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景5.总结 二、Redis简介1.Redis 具有以下几个优点2.使用场景3.哪些数据…

一、枚举类型——使用 EnumMap 分发

使用 EnumMap 可以实现“真正的”双路分发,它是专门为 enum 设计的高效 Map。我们的目标是在两个未知类型中切换,因此由 EnumMap 组成的 EnumMap (嵌套 EnumMap )可以实现双路分发。 RoShamBo5.java import java.util.EnumMap;imp…

如何 设计一个高质量的 API 接口?

目录 你是否也感同身受? 优秀API的特质 自解释 易学习 易使用 难误用 API 设计原则 1. 充分原则 2. 单一视角原则 3. 单一功能原则 4. 简单原则 5. 抽象原则 6. 兼容扩展原则 7. 最小惊讶原则 8. 低耦合原则 9. 正交原则 10. 易测试原则 11. 统一原…

怎样查看电脑开关机日志

最近想查看家里电脑是否每天都正常关机了。 家里的是Windows电脑。 使用windows自带功能或者说自带工具无疑是最方便的。 按下【开始→运行】,输入eventvwr,按下回车键。 打开事件查看器,展开Windows日志,双击系统。 选择筛…

Redis内存满分析

操作0: dbsize计算db大小,判断是哪个db的问题,发现是db1的问题。 操作1: Redis中先备份xxx.rdb文件,然后使用下面的工具进行分析 Redis内存分析工具之redis-rdb-tools的安装与使用_薛定谔的猫io的博客-CSDN博客 结…

如何在Windows 10中移动文档文件夹位置

默认情况下,Windows将你的个人文档文件夹存储在你帐户的%UserProfile%文件夹中(例如:“C:\Users\Kent”)。 你可以将“文档”文件夹中文件的存储位置更改为硬盘驱动器、其他驱动器或网络上的其他计算机上的其他位置。 一、如果你当前的文档文件夹受 OneDrive 保护,那么你…

记录一个iOS无法找到堆栈信息的崩溃修复

崩溃提示 2023-06-28 21:14:46.9624560800 -[UIDynamicCatalogColor length]: unrecognized selector sent to instance 0x6000073292c0 崩溃如下图所示 思路,既然我们无法通过调用的堆栈信息查找,那就试试通过崩溃对象的内存地址查看该对象的详细信息 …

攻防世界-web-mfw

题目描述:如图,只有这样的三个页面 home页面: about页面: contact页面: burp抓包可以看到返回的html中刚好对应了三个页面,以及注释掉的flag 尝试将page设置成flag,但是并没有什么反应。 1. 思…

【Web 网络管理】网络杂谈(8)之基于 Web 的网络管理

涉及知识点 基于 Web 的网络管理模式,WBM的介绍与标准,WBM的实现方式与关键技术,WBM的安全性考虑。深入了解WBM技术。 原创于:CSDN博主-《拄杖盲学轻声码》,更多内容可去其主页关注下哈,不胜感激 文章目录…

污水厂3D可视化智慧大屏实现统一数据管理和信息化建设

随着城市化进程的加速和人口的不断增长,污水排放量也随之增加。3D可视化技术的出现,为污水厂的管理和运营带来了新的思路和方法。本文将探讨污水厂3D可视化智慧大屏系统的意义。 首先,污水厂3D可视化智慧大屏系统可以帮助管理人员更好地了解…

Unable to open debugger port (127.0.0.1:55305): java.net.BindException

如图idea启动服务端口被占用,如何解决 1.修改启动服务的端口 修改tomcat的启动端口,避免和windows已启动端口占用(不推荐) 2.杀死占用服务的端口 winR 打开命令行窗口 netstat -aon|findstr “55305” taskkill -f -pid 25512…

汽车租赁系统

汽车租赁系统,java,ssm,tomcat,mysql。包含数据库文件,源码,和项目运行演示介绍视频 idea和eclipse都可以运行。 系统介绍: 角色:管理员,用户 主要功能:汽车资…

解决 vue2 productionTip=false设置无效

原因:在最新版本的Chrome中,在script中使用settimeout,将在允许第一个js完成后立即回调。 第一种: 直接在源码中,将productionTip:true直接改成false 第二种,则是在红框位置改成大于0的任意数值…

建立无需build的react单页面SPA框架

vue、react这种前端渲染的框架,比较适合做SPA。如果用ejs做SPA(Single Page Application),js代码控制好全局变量冲突不算严重,但dom元素用jquery操作会遇到很多的名称上的冲突(tag、id、name)。…

PyTorch Lightning基础入门

Lightning in 15 minutes Lightning in 15 minutes — PyTorch Lightning 2.0.4 documentation 安装 PyTorch Lightning pip install lightning conda install lightning -c conda-forge 定义一个LightningModule LightningModule可以让pytorch的nn.Module可以整合一些训…

一般人不要轻易去学习网络安全(黑客)

笔者本人 17 年就读于一所普通的本科学校,20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂,现就职于某大厂安全联合实验室。 我为啥说自学黑客,一般人我还是劝你算了吧!因为我就是那个不一般的人。 首先我谈下对黑客&a…

Nacos报9848

问题: Connection refused: no further information: localhost/0:0:0:0:0:0:0:1:9848 解决: 这里是springboot集成springcloud后,把application.yml改成bootstrap.yml就可以了,不然读取不到nacos配置。

Java调用scala中map转换问题处理

网上代码 把Javamap转为scala的map代码 scala.collection.mutable.Map<String, String> scalaMap JavaConverters.mapAsScalaMapConverter(map).asScala();Object objMap Map$.MODULE$.<String, String>newBuilder().$plus$plus$eq(scalaMap.toSeq());Object Bui…