小编Q-R*_*IUS的帖子

如何在Ubuntu上更新已安装的IntelliJ IDEA?

目前,我在我的Ubuntu 16.04中安装了IntelliJ IDEA 2016.3用于Java编程.我已经通过IntelliJ网站安装了它而不是ppa.启动后,我会update available在右下角收到通知,点击update后会打开IntelliJ IDEA网页,下载最新的IDE tar文件.我知道为了安装它,我需要下载tar文件,解压缩它usr/local,并从bin文件夹运行idea.sh.即使这样做,当我在Unity Dash中搜索IntelliJ时,我看到旧版2016.3版本的图标,点击它后,它会打开相同的旧版本.

所以我的问题是,如何在Unity Dash中搜索时更新整个现有的IntelliJ平台并将其视为结果?我能否以更新现有插件的方式更新它,并在重新启动IntelliJ时看到它们生效?

java linux intellij-idea ubuntu-16.04 intellij-idea-2016

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

Java中基元数组的QuickSort vs MergeSort

我知道Java的Arrays.sort方法使用MergeSort来排序对象(或对象集合)的数组,因为它是稳定的,而Java使用QuickSort作为基元数组,因为我们不需要稳定性,因为两个相等的整数是无法区分的,即它们的身份不是'无所谓.

我的问题是,在原语的情况下,为什么Java不使用MergeSort的保证O(n log n)时间而是使用QuickSort的平均O(n log n)时间?在这里的一个相关答案的最后一段中,解释说:

对于引用类型,引用对象通常占用的内存比引用数组多得多,这通常无关紧要.但对于原始类型,克隆数组会使内存使用量翻倍.

这是什么意思?克隆引用仍然至少与克隆基元一样昂贵.在基元数组上使用QuickSort(平均O(n log n))而不是MergeSort(保证O(n log n)时间)还有其他原因吗?

java arrays sorting mergesort quicksort

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

Java中的迭代器如何知道何时抛出ConcurrentModification异常

我有以下代码抛出ConcurrentModificationException,因为我在同一个列表中使用两个不同的迭代器,其中一个正在修改列表.因此,第二个迭代器在读取列表时抛出异常,因为其他迭代器已经修改了列表.

    List<Integer> list = new ArrayList<>();

    populate(list);//A method that adds integers to list

    ListIterator<Integer> iterator1 = list.listIterator();
    ListIterator<Integer> iterator2 = list.listIterator();

    while (iterator1.hasNext()) {
        if(iterator1.next() < 5)
            iterator1.remove();
    }

    while (iterator2.hasNext()){
        if(iterator2.next() < 5) {
         //Call handler   
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果它还没有到达一个尚未被删除的元素,那么内部如何iterator2知道has已被其他迭代器修改过?怎么弄清楚其他一些人已经改变了?一种方法可能是跟踪大小,但这不是原因,因为其他迭代器可以只替换任何元素.listiterator1iteratorlist

java collections exception concurrentmodification listiterator

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