小编use*_*869的帖子

为什么在LinkedHashMap中迭代桶的速度比HashMap快?

我很难理解这一点.

谷歌搜索,我发现

"HashMap迭代器必须迭代所有桶,包括空桶"

"在LinkedHashMap中,所有条目都是双重链接的".

如果是这种情况,为什么唯一的HashMap必须迭代空桶,而不是LinkedHashMap,尽管两者都使用相同的桶概念实现?所有条目都是双重联系的,意思是" 所有的桶和元素都是双重联系的 ",或者只是" 元素是双重联系的 ".

请给我一个解释LinkedHashMap中双向链接桶实现的图表.

提前谢谢了.

java collections hashmap linkedhashmap

6
推荐指数
2
解决办法
1991
查看次数

Treemap get抛出NullPointerException

Follwing是我的java类TestEntry.java

private void initializemapTest()
    {
        eventMap = new TreeMap<String,String>();

        //Put some value into eventMap

        mapTest = new TreeMap<String, String>( new Comparator<String>()
        {
            public int compare( String key1, String key2 )
            {
               if( key1 == null )
                {
                    if( key2 == null )
                    {
                        return 0;
                    }
                    else
                    {
                        return 1;
                    }
                }
                else
                {
                    if( key2 == null )
                    {
                        return -1;
                    }
                    else
                    {
                        return key1.compareTo( key2 );
                    }
                }
            }
        } );

        for( String s : eventMap.keySet() ) …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
2549
查看次数

在 mysql 存储过程中使用 TRY CATCH 出现异常

以下是我尝试捕获异常的过程(如果存储过程中有任何异常)

DROP PROCEDURE IF EXISTS test;

DELIMITER //

CREATE PROCEDURE test( IN contextFilter TEXT)
   BEGIN TRY


  set  @sub_query = 'SELECT id from test_table';

   PREPARE stmt_query FROM @sub_query;
      SELECT @sub_query;
                EXECUTE stmt_query;
                DEALLOCATE PREPARE stmt_query;

   END TRY //
   BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() AS ErrorMessage;
  END CATCH

 DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

当我尝试获取存储过程时,出现以下异常

source /home/test.sql;
Query OK, 0 rows affected (0.01 sec)

ERROR 1064 (42000) at line 5 in file: '/home/test.sql': You have an error in your SQL syntax; check the manual that …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures

3
推荐指数
1
解决办法
4万
查看次数

当两个线程试图在并发hashmap中放入相同的键值时会发生什么

想象一下,有两个线程A,B将分别在地图中放置两个不同的值,即v1和v2,具有相同的密钥.密钥最初不存在于映射中线程A调用containsKey并发现密钥不存在,但是立即挂起线程B调用containsKey并发现密钥不存在,并且有时间插入其值v2

当线程A回来时,会发生什么?我假设,它调用put方法反过来调用putIfAbsent但是密钥已经存在于线程B.so线程A将不会覆盖该值

但是从这个链接我发现线程A恢复并插入v1,"和平"覆盖(因为put是线程安全的)线程B插入的值 是ConcurrentHashMap完全安全吗?

java multithreading

2
推荐指数
1
解决办法
3584
查看次数