小编Nis*_*lon的帖子

添加到hashmap需要很长时间

在我的java程序中,我已经停留了几行,这需要花费太多时间(大约20秒),这对我来说似乎很奇怪.

这是线

 Map<URL, Integer> res2 = new HashMap<>();
 for (URL url : res) {
     res2.put(url, null);
 }
Run Code Online (Sandbox Code Playgroud)

哪个res定义如下:

List<URL> res = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

在我的程序中,res.size()〜= 1500

你知道我的问题可能来自哪里吗?

谢谢 !

java

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

String.compareIgnoreCase返回错误的结果

我正在使用Java 8.

我已经苦苦挣扎了几天才能理解与字符串比较相关的错误.看看这个测试.两个字符串是不同的("i"不是同一个,而不是另一个的大写/小写版本).

我希望这个测试能够通过.第一个断言成功但第二个断言失败(由于某种原因,compareIgnoreCase返回0)

知道发生了什么事吗?

谢谢

String str1 = "v?rus";
String str2 = "virus";
Assert.assertNotEquals(0, str1.compareTo(str2));
Assert.assertNotEquals(0, str1.compareToIgnoreCase(str2));
Run Code Online (Sandbox Code Playgroud)

java unicode case-insensitive

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

如何从TaskCompletionSource取消任务?

我正在尝试创建一个异步ProducerConsumerCollection,为此,我正在使用此msdn页面(http://msdn.microsoft.com/zh-cn/library/hh873173.aspx(页面底部))。

我现在正在尝试添加超时,这是我的工作:

    public async Task<T> TakeWithTimeout(int timeout)
    {
            Task<T> takeTask = this.Take();

            if (timeout <= 0 || takeTask == await Task.WhenAny(this.tasks.Take(), Task.Delay(timeout)))
            {
                return await takeTask;
            }
            else
            {
                // Timeout
                return default(T);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

此代码的问题在于,在超时的情况下,它不会取消Take()方法创建的任务。

由于此任务是由TaskCompletionSource“创建”的,因此我不能给它一个CancellationToken吗?

因此,如何继续取消它并正确实现此Take with timeout?

谢谢 :)

c# asynchronous

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

标签 统计

java ×2

asynchronous ×1

c# ×1

case-insensitive ×1

unicode ×1