精华内容
下载资源
问答
  • 论点:Map的双列集合,在key存在与否,同时对应的value不存在的时候,什么时候引发指针问题问题点1:当拥有key,但是value值为null的情况 结论:同样输出null,并不会报出指针异常!问题的2:不存在key...

    本文已AndroidStudio书写,用于记录前辈提出的一个考证点。

    论点:Map的双列集合,在key值存在与否,同时对应的value值不存在的时候,什么时候引发空指针问题

    问题点1:当拥有key值,但是value值为null的情况
    结论:同样输出为null,并不会报出空指针异常!

    这里写图片描述

    问题的2:不存在key值,取key对应的value的情况
    依旧会报空指针,如下图

    这里写图片描述

    • 不同点(部分时候会正常运行,保险点就try,catch下)

    这里写图片描述
    MainActivity :

    package com.bakheet.effect.keydown;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.HashMap;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final HashMap<String, String> maps = new HashMap<>();
            maps.put("account",null);
    
            TextView mBtn = (TextView) findViewById(R.id.btn);
            mBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this,"data =  "+maps.get("account"),Toast.LENGTH_SHORT).show();
                    Log.e("tag","account ="+maps.get("account"));
                    Log.e("tag","password ="+maps.get("password"));
                    try {
                        Log.e("tag","password ="+maps.get("password"));
                    }catch (Exception e){
                        Log.e("tag","异常处理");
                    }
                }
            });
        }
    }
    

    MainActivity Xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.bakheet.effect.keydown.MainActivity">
    
        <TextView
            android:layout_marginTop="10dp"
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:padding="5dp"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:text="Key Set" />
    </RelativeLayout>
    
    展开全文
  • :cry: 我用hashmap存放通信线程 [code="java"] //其中hm的key用户名,value对应的通信线程,hashmap定义在ManagerClientSocket中 public class ManagerClientSocket { //用hashmap来存放各个客户端与服务器...
  • hashMap判断是否为空null失败

    千次阅读 2020-06-02 21:32:40
    原始需求:从数据库取值放入集合,判断集合是否为空,不为空进方法,结果明明是的也进方法了 原因:new出来的hashMap存在一个对象引用地址,所以就不能null,空集合和null是有区别的 解决问题关键代码:在循环...

    原始需求:从数据库取值放入集合,判断集合是否为空,不为空进方法,结果明明是空的也进方法了

    在这里插入图片描述
    在这里插入图片描述

    原因:new出来的hashMap存在一个对象引用地址,所以就不能为null,空集合和null是有区别的

    解决问题关键代码:在循环外面赋值为null,进循环后再创建对象,这样在数据库如果没有取到值就不会进入循环

    public Map<String, String> findUser(String userName,String password) {
    		StringBuilder sBuilder = new StringBuilder();
    		sBuilder.append("select user_name,password from user where user_name='"+userName+"' and password="+password);
    		ResultSet doQuery = JDBCUtil.doQuery(sBuilder);
    		Map<String, String> map = null;
    		try {
    			while(doQuery.next()) {
    				map = new HashMap<>();
    				String userNameDB = doQuery.getString("user_name");
    				String passwordDB = doQuery.getString("password");
    				map.put("userName", userNameDB);
    				map.put("password", passwordDB);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return map;
    	}
    

    展开全文
  • HashMap

    万次阅读 2019-12-11 17:40:25
    HashMap是基于Entry数组的链表结构,在高并发的情况下,会造成链表闭合,死循环,线程不安全, HashMap的默认数组大小是16,负载因子是0.75,但是实际储存大小是(16 * 0.75 = 12),当数组内元素超过12 时,就会自动...

    HashMap是基于Entry数组的链表结构,在高并发的情况下,会造成链表闭合,死循环,线程不安全,

    HashMap的默认数组大小是16,负载因子是0.75,但是实际储存大小是(16 * 0.75 = 12),当数组内元素超过12

    时,就会自动扩容16 * 2,如果还是不够就16 * 2 * 2以此类推。

    HashMap 的也有缺点,例如存储容量占比高,考虑到负载因子的存在,通常空间是不能被用满的,而一旦你的值很多例如上亿的时候,那 HashMap 占据的内存大小就变得很可观了。

    展开全文
  • 话说从后台得到了一个hashmap集合,在前台页面用js已经接收到了map="${map}"数据格式如下 {一级菜单1={二级菜单1.1=[三级菜单1.1.1, 三级菜单1.1.2]}, 一级菜单2={二级菜单2.1=[三级... 当三级菜单中值为空时,就不显示
  • HashMap的get方法为空解读

    千次阅读 2017-09-30 10:46:39
    package cn.itcast.heima2; import java.util.HashMap; import java.util.Map; import java.util.Random; public class ThreadScopeShareData { private static Map threadData=new HashMap(); public static vo
    package cn.itcast.heima2;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Random;
    
    public class ThreadScopeShareData {
    	private static Map <Thread,Integer>threadData=new HashMap<Thread,Integer>();
    	public static void main(String[] args) {
    		for(int i=0;i<2;i++){
    			new Thread(new Runnable() {
    				
    				public void run() {
    					
    					int data=new Random().nextInt();
    					
    					System.out.println(Thread.currentThread().getName()+
    							" has put data:"+data);
    					threadData.put(Thread.currentThread(), data);
    					new A().get();
    				}
    			}).start();
    		}
    		
    	}
    	static class A{
    		public void get(){
    			
    			try {
    				Integer data=threadData.get(Thread.currentThread());
    				System.out.println("from "+Thread.currentThread().getName()+
    						" get data:"+data);
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    	
    }
    


    /*

    void addEntry(int hash, K key, V value, int bucketIndex) {
    	Entry<K,V> e = table[bucketIndex];
            table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
            if (size++ >= threshold)
                resize(2 * table.length);
        }

    在hashmap做put操作的时候会调用到以上的方法。现在假如A线程和B线程同时对同一个数组位置调用addEntry,两个线程会同时得到现在的头结点,然后A写入新的头结点之后,B也写入新的头结点,那B的写入操作就会覆盖A的写入操作造成A的写入操作丢失
    */

    展开全文
  • 指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时 put)方法,这在依赖于 Map.keySet() 或 null 初始化的时候比较有用。注意基本类型(int、boolean 等)是不能设置成 null 的。 默认情况...
  • hashMap根据排序

    2017-05-22 15:46:55
    根据排序: List, Double>> data = new ArrayList(map.entrySet()); Collections.sort(data, new Comparator, Double>>() {
  • 在Mybatis的配置文件里添加  ...-- 返回HashMap字段值为null时保存key --> <settings> <setting name="callSettersOnNulls" value="true"/> </settings> </configu...
  • 这是输出内容:过程名= NGSYS1.P_DICWH_UPDATESTATUS 参数个数=3 hashMap值={"PRO_PARM_1":"1002","PRO_PARM_2":"8380480"} 数据类型=1 hashMap取值=null parMap大小 =2 hashMap的值=[1002, 8380480] 判断contains...
  • 应用场景 HashMap是线程不安全的,所以应用于单线程场景下 ConcurrentHashMap和HashTable是线程安全的,应用于多线程场景下 ...因为HashMap是应用在单线程场景下,在源码中,当判断key为空时,会把val...
  • 关于HashMap的学习

    千次阅读 2018-09-27 21:17:36
    今天看到有网友说HashMap是按照键的顺序排好的,所以很奇怪什么说它是无序的,然后下边网友给出了插入很多数据的例子,结果顺序是乱的。首先HashMap无序是指它并没有按照插入的顺序排列,而不是指按照自然顺序...
  • hashmap

    千次阅读 2014-10-23 21:08:08
    hashmap 的用法 hashmap 实现了map接口
  • hashmap为什么要允许key和value为空 但是hashtable却不允许呢?源码说这是特殊的map,难道它除了线程安全,还有别的吗?
  • java HashMap插入重复Key问题

    千次阅读 2019-12-09 08:55:34
    要在HashMap中插入重复的,首先需要弄清楚HashMap里面是怎么存放元素的。 put方法 Map里面存放的每一个元素都是key-value这样的键值对,而且都是通过put方法进行添加的,而且相同的key在Map中只会有一个与之关联...
  • 我在Map 里存了一组数据,是在数据库查询出来的,里面有Null,若m.get("v_contact_office"); 这样直接获取,如果遇到Null就会报错了,我应该怎样判断是否有空值。
  • 通过反射取得hashmap

    千次阅读 2017-08-07 17:40:11
    本人最近项目中在遇到个这个情况,需要做动态代理,invoke方法里的参数是object类型,实际参数是hashmap类型,需要从object类型里面取出key value键值对 首先hashmap和object是不能直接强制转换类型的,我采用反射...
  • HashMap允许一个 null键,多个 null,而 Hashtable不允许键和值为null。 从下图可以看到 HashMap 对 null 做了特殊处理: 但是 Hashtable 会在我们 put 空值的时候直接抛出指针异常,如下图: 不过更详细的...
  • HashMap Map<String,String> map=new HashMap<>(); map.put(null,"123"); system.out.println(map); static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key....
  • java hashmap集合如何最优的去除valuenull或的元素
  • hashmap允许键和空值

    千次阅读 2020-08-20 15:49:52
  • HashSet/HashMap 存取的过程

    千次阅读 2018-06-09 15:43:13
    HashSet与HashMap的关系:(1)HashSet底层用的就是HashMap
  • HashMap的put方法存过程图 ...第二步:判断这个桶是否为空,如果是,直接把对象存到数组里,存储结束;如果不是,转到第三步 第三步:判断已存在对象的key的equals方法,跟需要添加的对象的key对比,是否tru

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,506
精华内容 58,202
关键字:

hashmap的值为空