小编Dan*_*don的帖子

在Java ConcurrentHashMap中打印所有键/值对

我试图简单地在ConcurrentHashMap中打印所有键/值对.

我在网上找到了这个代码,我认为会这样做,但它似乎是获取有关桶/哈希码的信息.其实说实话输出很奇怪,可能我的程序不正确,但我首先要确保这部分是我想要使用的.

for (Entry<StringBuilder, Integer> entry : wordCountMap.entrySet()) {
    String key = entry.getKey().toString();
    Integer value = entry.getValue();
    System.out.println("key, " + key + " value " + value);
}
Run Code Online (Sandbox Code Playgroud)

这为大约10个不同的键提供输出,其计数似乎是映射到插入的总插入数的总和.

java collections hashmap concurrenthashmap

12
推荐指数
3
解决办法
13万
查看次数

使用查询INSERT INTO,并添加默认值

我想运行一个INSERT INTO table SELECT... FROM... 问题是我插入的表有5列,而我选择的表只有4.第5列需要设置我做的默认值.我怎么能做到这一点?查询将是这样的(注意:这是Oracle):

INSERT INTO five_column_table
     SELECT * FROM four_column_table
     --and a 5th column with a default value--;
Run Code Online (Sandbox Code Playgroud)

sql oracle insert-into

8
推荐指数
1
解决办法
6774
查看次数

使用ScalaTest时从SBT中排除特定标记的测试

我在尝试运行所有测试时遇到了很多挫折sbt- 同时排除了特定的标签.这是我想要运行的:

testOnly * -- -l "com.my.project.path.tags.ValidationTest"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这个命令的许多变体,包括用*类的路径替换,或者像这样替换包的路径:

testOnly "com.my.project.path.somePackage" -- -l "com.my.project.path.tags.ValidationTest"
Run Code Online (Sandbox Code Playgroud)

而且我已尝试在包装周围使用和不使用引号.

我只是读到testOnly了新版本中使用的sbt而不是test-only.我尝试过这种语法(以及许多变体),似乎没有任何效果.我的测试设置如下:

"some method" should "fail when doing something" taggedAs ValidationTest in { ... }
Run Code Online (Sandbox Code Playgroud)

我已经object ValidationTest extends Tag("com.my.project.path.tags.ValidationTest")定义了TestTag.scala.

当使用it关键字而不是使用关键字定义方法时,我也尝试了这一点"some method" should "fail..."

使用ScalaTest的Sbt在" 包含和排除带有标记的测试 " 下显示以下内容

> test-only org.acme.* -- -n CheckinTests
> test-only org.acme.* -- -n FunctionalTests -l org.scalatest.tags.Slow
> test-only org.acme.* -- -n "CheckinTests FunctionalTests" -l …
Run Code Online (Sandbox Code Playgroud)

automated-tests scala sbt scalatest

7
推荐指数
1
解决办法
966
查看次数

使用when().thenReturn()的Mockito UnfinishedStubbingException

Unfinished Stubbing detected here在运行以下代码时收到错误消息:

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.*;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;

@RunWith(PowerMockRunner.class)
public class PatchWriterTaskTest {
@Before
public void before() throws Exception {
    filePath = getFilePath();
    task = PowerMockito.spy(new PatchWriterTask());
    patchFilesName = new HashMap<Integer, String>();

    patchFilesName.put(1, "TCE_RDF_COVERED_DATA_REGION.sql");

    scriptPath = new File(filePath + "do_patch_rdf.sql");

    PowerMockito.when(task, "getLogger").thenReturn(logger);
    PowerMockito.when(task, "getPatchFilesName").thenReturn(patchFilesName);
    PowerMockito.when(task, "getDirectoryPath").thenReturn(filePath);
    PowerMockito.when(task, "saveDoPatchFile");
}
@Test
public void testUpdateIssuesTable() throws Exception {
        PatchWriterTask task = new PatchWriterTask();
        Connection conn = mock(Connection.class);
        PreparedStatement …
Run Code Online (Sandbox Code Playgroud)

java jdbc prepared-statement mockito

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

FindBugs警告:使用keySet迭代器效率低下

这是一个类似的问题[ FindBugs警告:使用keySet迭代器而不是entrySet迭代器的效率低下

但是,我想尝试做一些不同的事情.我目前的代码在这里:

for (Double key2 : sortedPolygons.keySet()) {
    if (sortedPolygons.get(key2).getExteriorRing().equals(hole)) {
        sortedPolygons.remove(key2);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在链接中执行类似解决方案的操作不起作用.以下是所述解决方案的实现:

for(Map.Entry<Double, Polygon> entry : sortedPolygons.entrySet()) {
    if (entry.getValue().getExteriorRing().equals(hole)) {
         .....
Run Code Online (Sandbox Code Playgroud)

这里的问题是我试图删除该条目.没有entry.remove().如何在没有FindBugs错误的情况下替换我的第一个代码块:

低效使用keySet迭代器而不是entrySet迭代器 - >

此方法使用从keySet迭代器检索的键访问Map条目的值.在map的entrySet上使用迭代器更有效,以避免Map.get(键)查找.

需要注意的是TreeMap,底层结构是,并且无法更改.

java iterator findbugs treemap sonarqube

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