java中将字符串传入到HashMap中

java中将字符串传入到HashMap中,第1张

package test

import java.util.HashMap

import java.util.Map

public class test {

public static void main(String[] args) {

String a[]=new 纤庆String[]{"1001_张三","1002_李四","1003_王五","1004_赵六"}

Map<String, String> 毁郑握map=new 丛汪HashMap<>()

for(int i=0i<4i++){

String num=a[i].substring(0, a[i].indexOf("_"))

String name=a[i].substring(a[i].indexOf("_"+1))

map.put(num,name)

}

}

}

假设有一个轮前顷List<String>a里面已经有值了。

假设你定义了一个 List<腊陆Hashmap<String,String>>b

for(String s : a){

HashMap<String,String>m = new HashMap<String,String>()

m.put(s,s)

b.add(m)

}

走完这个悔巧循环出来的变量b应该就是你要的东西了。

HashMap 判断key能不能取出其value是调用key对象的hashCode方法,根据其返回值判断去哪个“桶”(详情找本数据结构的书看看)。而Java语言数档搜组对象并没有覆盖或重写hashCode方法,所以它调用的是Object对象的hashCode方法,Object对象的hashCode方法声明为native的,其在JDK 1.6的文档中描述如下:

hashCode 的常规协定是:

在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被行枯历修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

注意第一条,是“同一对象”多次调用返回相同整数,而不同对象并不保证(即使他们内部值一样,或者是通常意义上的“相等”。更进一步,如果类没有重写hashCode方法(如数组对象),那么其两个对象的hashCode方法返回值几乎总是不相等的)。

所以你新new 的数组对象败宴几乎是不可能拿到以原来数组对象为key保存在HashMap中的value的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11966485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存