在Java中,有一种key值可以重复的map,就是IdentityHashMap.在IdentityHashMap中,判断两个键值k1和 k2相等的条件是 k1 == k2 .在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2)). IdentityHashMap类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性代替对象相等性.该类不是 通用 Map 实现!此类…
package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重复的测试 public class TestEquals { public static void main(String[] args) { String s1=new String("abc"); String s2=new String("abc"); Map map=new Has…
JAVA中List对象去除重复值,大致分为两种情况,一种是List<String>.List<Integer>这类,直接根据List中的值进行去重,另一种是List<User>这种,List中存的是javabean对象,需要根据List中对象的某个值或某几个值进行比较去重.方法如下: 一.List<String>.List<Integer>对象去重复值. 这种情况的话,处理起来比较简单,通过JDK1.8新特性stream的distinct方法,可…
Java中的容器类(List,Set,Map,Queue) 一.基本概念 Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素,而Set不能有重复的元素.Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同). 2)Map.一组成对的“键值对”对象,允许你使用键来查找值.ArrayList允许你使用数字来查找值,因此在某种意义上讲,它将数字与对象关联在…
Java中的集合(十二) 实现Map接口的WeakHashMap 一.WeakHashMap简介 WeakHashMap和HashMap一样,WeakHashMap也是一个哈希表,存储的也是键值对(key-value)映射,且键值都可以为null. 不过WeakHashMap的键是“弱键”.在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除.更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后…
json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info':{'business_code':'0001','business_info':{'business_name':'ok'}}}"; 转换为: String json= "{'userName':'ok','userSex':0,'objectInfo':{'businessCode'…
1.先比较下字符串的比较 == 代表全等于 值和地址(存放地址) 全部相等于. equals 值等于== 和 equals的区别 列如下面的 如果name1==name2是等于的 然而name1==name3 结果 不是不等于的,因为生成了新的地址 如果 name1.equals(name3) 这个比较只要求值的比较,输出结果是相等的. String name1="zhangsan"; String name2="zhangsan"; String name3=ne…
本文转载自公众号 Hollis 对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂.所以,就有了我写这篇文章的初衷.这篇文章中,我从什么是方法的实际参数和形式参数开始,给你讲解为什么说Java中只有值传递. 辟谣时间 关于这个问题,在StackOverflow上也引发过广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同,甚至很多人理解的是错误的.…
  题目如下: private static void change(StringBuffer str11, StringBuffer str12) { str12 = str11; str11 = new StringBuffer("new world"); str12.append("new world");} public static void main(String[] args) { StringBuffer str1 = new StringBuffe…
值传递: (形式参数类型是基本数据类型和String):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值. 引用传递: (形式参数类型是引用数据类型参数除去String):也称为传地址.方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数…