老师请问我遍历Value内容的时候打印出来的结果和老师不一样是为什么?
代码:
package com.bjsxt.hashmap; import java.util.Collection; import java.util.HashMap; import java.util.Set; /** * 测试hashMap * @author Administrator * */ public class TestHashMap { public static void main(String[] args){ //Map接口的特点,key不允许重复,值可以重复,而且key是无序的 //创建集合对象 HashMap hm=new HashMap(); //(1)添加元素 hm.put("hello", 123);//123自动装箱成Integer类,集合不允许出现基本数据类型 hm.put("world", 456); hm.put("hello", 1000);//集合去添加元素的时候它的键(key)是不允许重复的,如果重复将进行键的覆盖 hm.put("java", 1000);//值可以重复(1000) System.out.println("集合中元素的个数:"+hm.size()); System.out.println("集合是否为空:"+hm.isEmpty()); System.out.println(hm); System.out.println(hm.remove("world"));//先输出后移除,只移除了键world,456还在 System.out.println(hm); //判断 //containsKey判断这个键是否存在 System.out.println(hm.containsKey("java")+"\t"+hm.containsKey("world")); //containsValue判断这个值是否存在 System.out.println(hm.containsValue(1000)+"\t"+hm.containsValue(2000)); //获取元素,根据键去获取值 System.out.println(hm.get("java")+"\t"+hm.get("world")); //获取所有键(key)的集合 Set set=hm.keySet(); //遍历所有键的内容 for(Object obj:set){ System.out.println(obj); } //获取所有值(value)的集合 System.out.println("\n---------------------- "); Collection coll=hm.values(); //遍历所有值的类型 for(Object obj:coll){ System.out.println(coll); } //获取所有key-value关系的集合 Set entrySet=hm.entrySet(); for(Object obj:entrySet){ System.out.println(obj); } /** * HashMap与Hashtable * 区别: * (1)版本不同 HashMap JDK1.2 Hashtable JDK1.0 * (2)HashMap继续了AbstractMap,实现了Map接口,Hashtable继承了Dictionary实现Map接口 * (3)HashMap允许null值和null键,但是null作为key只允许以一个,Hashtable非null的键和值 * (4)HashMap是线程不同步的(效率高,安全性低),Hashtable是线程同步的(效率低,安全性高) */ } }
这边是我的源码
新建文件夹.zip
请问为什么从容器开始,左边就没有文档选项了?现在想看文档只能去百度云下载了吗?
flush时将数据从内存中写入到磁盘中,也就是收fos.write时将程序写入到内存中喽,是这样吗
老师 字节输入输出流为什么不是等于空的时候关闭 而是不等于空的时候关闭 ,不等于空的时候不是还没有读完吗
这一步的快捷方式是什么?
为什么不把11到13行注释掉 sql添加不进去呢
老师 那个先运算后加减和先加减后运算具体的区别是什么呀
老师,为什么我这里打印了两次itbz
老师,使用ListIterator逆向遍历的时候我有疑惑?正向遍历的时候,集合里有4个元素,对应下表0,1,2,3.
请问正向遍历的时候ListIterator的指针是不是在-1的位置?这样System.out.println(listIte.next)才会输出第0个元素
当遍历到最后一个元素的时候下标是三。他后面没有元素,前面有元素。这时候用System.out.println(listIte.previous)输出的不是倒数第二个元素吗?但是为什么正确的情况确是输出了最后一个元素,它的指针不是在最后一个元素上吗,输出前一个不就是倒数第二个吗?
我这里一直没想通,请老师解答一下
1
这底层源码分析一定要全理解吗?这底层源码分析一定要全理解吗?这底层源码分析一定要全理解吗?
老师我如果直接调用readInt会直接报异常,调用speek就不会,这是为什么
前面不是提过Integer和String都有自身的compareTo方法嘛,那这里为什么不能直接使用Integer自身的compareTo方法来比较年龄的大小呢?
(){ TelNoteRegex telNoteRegex = TelNoteRegex()String name = telNoteRegex.nameValidate()flag = (i = i<..size()i++){ (name.equals(..get(i).getName())){ System..println(..get(i))flag = } } (flag){ System..println()} }
我和老师的代码一样 但是我跳不出循环
public class YieldThread implements Runnable{ boolean flag = true; @Override public void run() { int i=0; System.out.println(Thread.currentThread().getName()+" 线程开始"); while(flag) { System.out.println(Thread.currentThread().getName()+" "+i++); } System.out.println(Thread.currentThread().getName()+" 线程结束"); } public void stop() { flag = false; } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+" 主线程开始"); YieldThread yt = new YieldThread(); Thread t = new Thread(yt); t.start(); for(int i=0;i<20;i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i==15) { yt.stop(); } } System.out.println(Thread.currentThread().getName()+" 主线程结束"); } }
当主线程的值等于15时结束,为什么还会在运行一次子线程的循环?,是不是当子线程处于就绪状态时,无法修改flag的值?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2026百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637