小编Cla*_*diu的帖子

3119
推荐指数
17
解决办法
284万
查看次数

迭代集合,在循环中删除对象时避免使用ConcurrentModificationException

我们都知道你不能这样做:

for (Object i : l) {
    if (condition(i)) {
        l.remove(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

ConcurrentModificationException等等......这显然有时起作用,但并非总是如此.这是一些特定的代码:

public static void main(String[] args) {
    Collection<Integer> l = new ArrayList<>();

    for (int i = 0; i < 10; ++i) {
        l.add(4);
        l.add(5);
        l.add(6);
    }

    for (int i : l) {
        if (i == 5) {
            l.remove(i);
        }
    }

    System.out.println(l);
}
Run Code Online (Sandbox Code Playgroud)

当然,这会导致:

Exception in thread "main" java.util.ConcurrentModificationException
Run Code Online (Sandbox Code Playgroud)

...即使多线程没有这样做......无论如何.

什么是这个问题的最佳解决方案?如何在循环中从集合中删除项而不抛出此异常?

我也在Collection这里使用任意,不一定是ArrayList,所以你不能依赖get.

java iteration collections

1158
推荐指数
12
解决办法
46万
查看次数

Ruby:kind_of?与instance_of?与is_a?

有什么不同?我什么时候应该使用哪个?为什么会有这么多?

ruby inheritance introspection

470
推荐指数
4
解决办法
18万
查看次数

什么是计算机科学的NP-complete?

什么是NP完全问题?为什么它是计算机科学中如此重要的话题?

language-agnostic theory algorithm np-complete mathematical-optimization

405
推荐指数
12
解决办法
24万
查看次数

JavaScript Hashmap等效

正如在这个答案的更新3中所表明的那样,这种表示法:

var hash = {};
hash[X]
Run Code Online (Sandbox Code Playgroud)

实际上并不散列对象X; 它实际上只是转换X为一个字符串(通过.toString()它是一个对象,或者是各种基本类型的一些其他内置转换),然后在" hash"中查找该字符串,而不对其进行散列.也不检查对象相等性 - 如果两个不同的对象具有相同的字符串转换,它们将仅相互覆盖.

鉴于此 - 在JavaScript中是否有任何有效的哈希映射实现?(例如,第二个Google结果javascript hashmap产生一个实现,对于任何操作都是O(n).各种其他结果忽略了具有等效字符串表示的不同对象相互覆盖的事实.

javascript language-features hashmap data-structures

328
推荐指数
10
解决办法
56万
查看次数

什么是参考透明度?

参考透明度这个术语是什么意思?我听说它被描述为"它意味着你可以用平等替换等于",但这似乎是一个不充分的解释.

theory computer-science functional-programming referential-transparency

267
推荐指数
10
解决办法
5万
查看次数

Python当我捕获异常时,如何获取类型,文件和行号?

捕获将如此打印的异常:

Traceback (most recent call last):
  File "c:/tmp.py", line 1, in <module>
    4 / 0
ZeroDivisionError: integer division or modulo by zero
Run Code Online (Sandbox Code Playgroud)

我想将其格式化为:

ZeroDivisonError, tmp.py, 1
Run Code Online (Sandbox Code Playgroud)

python exception-handling exception stack-trace

231
推荐指数
6
解决办法
19万
查看次数

跳过列表与二进制搜索树

我最近遇到了称为跳过列表的数据结构.它似乎与二叉搜索树具有非常相似的行为.

为什么你想在二叉搜索树上使用跳过列表?

language-agnostic algorithm binary-tree skip-lists data-structures

212
推荐指数
5
解决办法
6万
查看次数

Python - 创建具有初始容量的列表

像这样的代码经常发生:

l = []
while foo:
    #baz
    l.append(bar)
    #qux
Run Code Online (Sandbox Code Playgroud)

如果您要将数千个元素追加到列表中,这非常慢,因为必须不断调整列表大小以适应新元素.

在Java中,您可以创建具有初始容量的ArrayList.如果您对列表的大小有所了解,那么效率会更高.

我知道像这样的代码通常可以重新考虑到列表理解中.但是,如果for/while循环非常复杂,那么这是不可行的.我们的Python程序员有没有相同的东西?

python dictionary initialization list

182
推荐指数
7
解决办法
16万
查看次数

Python链接列表

在python中使用链表最简单的方法是什么?在方案中,链接列表简单地定义'(1 2 3 4 5).事实上,Python的列表[1, 2, 3, 4, 5]和元组(1, 2, 3, 4, 5)并不是链表,链表有一些很好的属性,例如常量时间连接,并且能够引用它们的不同部分.让它们一成不变,它们真的很容易合作!

python linked-list

178
推荐指数
7
解决办法
29万
查看次数