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的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)