小编Cra*_*lus的帖子

存储jtree的状态/扩展节点以恢复状态

我正在和JTree合作.

我想知道什么是最好的方法来了解在JTree中扩展哪些节点以便保存其状态(即保存所有扩展路径).因此,如果我调用model.reload()Jtree不会保持折叠,但我将能够将其原始状态恢复到用户,即,将扩展所有扩展节点.

java user-interface swing jtree treemodel

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

使用堆属性按照排序顺序打印树(Cormen)

我对算法理论很感兴趣(来自Cormen).
本章中有一个针对二进制尝试的练习,询问:

可以使用min-heap属性在O(n)时间内按排序顺序打印出n节点树的键吗?展示如何,或解释为什么不.

我想是的,这是可能的.
在最小堆中,节点中的元素小于其子节点.
因此堆的根始终是所有n个元素中较小的元素,并且根的左子节点小于左子树中的所有元素,并且根的右子节点小于所有元素中的所有元素.正确的子树等

因此,如果我们继续使用root,打印它,然后使用较小的子进程更新root,我们保留min-heap属性,并按排序顺序打印.(我在考虑一个不基于数组的最小堆).

所以这可以在O(n)时间内完成,因为更新根,我们只是比较2个子节点并将根指针更新为2中的较小者.

但我在这里检查了解决方案:
Cormen Supplement Solutions

1)它谈论max-sheaps 2)它说它不能在O(n)时间内完成:

在堆中,节点的密钥是其子密钥.在二叉搜索树中,节点的键是其左子键,但是右子键.与binary-searth-tree属性不同,heap属性无法按排序顺序打印节点,因为它不会告诉节点的哪个子树包含要在该节点之前打印的元素.在堆中,小于节点的最大元素可以在任一子树中.请注意,如果可以使用堆属性在O(n)时间内按排序顺序打印密钥,那么我们将使用O(n)-time算法进行排序,因为构建堆只需要O(n)时间.但我们知道(第8章)比较排序必须花费(n lg n)时间.

从我的角度来看,我可以理解使用max-heap,无法在O(n)中打印它们.
但是,根据我解释的推理,使用min-heap属性是不是可以做到这一点?
另外,为什么解决方案会忽略min-heap.是拼写错误还是错误?

我在这里误会了什么吗?

theory algorithm heap computer-science binary-tree

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

为什么JDK使用移位而不是乘法/除法?

我有以下问题:

如果被问到是否使用移位与乘法或除法(例如答案),请让JVM进行优化.

这里的示例:is-shifting-bits-faster-than-multiplying

现在我正在查看jdk源代码,例如Priority Queue,代码仅使用乘法和除法(有符号和无符号)进行移位.

理所当然地认为SO中的帖子是有效的答案我想知道为什么在jdk他们更愿意通过转移来做到这一点?

它是一些与性能无关的微妙细节吗?我怀疑它必须与上/下溢乘法和除法有关但我不确定.

有人有想法吗?使用移位是否能更好地处理溢出问题?或者只是味道问题?

java collections optimization bit-manipulation priority-queue

7
推荐指数
2
解决办法
1350
查看次数

我们如何在普通Javascript中实现取消?

我有一个页面,我在表格中显示数据.
在每个表中,我有一个列,checkbox其中if是checked用户可以通过Javascript修改特定行.
这是完成的,因为它td封装了一个input或一个select和我使这些可编辑为用户.
用户修改行并按下保存并保存更改.到目前为止还好.
我的问题是如何实现cancel
用户可以选择多行,即复选框并修改它们,但用户也可以按取消.取消时,应显示原始值(并且行再次变为不可编辑).
但是如何在Javascript中实现取消操作?我们是否将数据存储在某些全球数据结构中?在Javascript中会出现这种情况?

javascript css html-table

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

在Perl中是否有运行时的实际派生类?

我正在研究Perl OO(Perl的新手).我创建了一个简单的示例层次结构:
父类:

#!usr/bin/perl  
use strict;  
use warnings;  

package Objs::Employee;  

my $started;  

sub new {  
    my ($class) = @_;  
    my $cur_time = localtime;  
    my $self = {  
        started => $cur_time,  
    };
    print "Time: $cur_time \n";  
    bless $self;  
}  

sub get_started {  
    my ($class) = @_;  
    return $class->{started};  
}  

sub set_started {  
    my ($class, $value) = @_;  
    $class->{started} = $value;  
}  

1;  
Run Code Online (Sandbox Code Playgroud)

儿童班:

#!/usr/bin/perl  
package Objs::Manager;  
use strict;  
use warnings;  

use base qw (Objs::Employee);  

my $full_name;  

sub new {  
    my ($class, …
Run Code Online (Sandbox Code Playgroud)

oop perl perl-module activestate

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

通过执行程序的java线程重用

我对以下内容感到困惑:
要在Java程序中使用线程,最简单的方法是扩展Thread类并实现runnable接口(或简单地实现runnable).
启动线程的执行.我们必须调用Thread的方法start(),然后调用线程的方法run().所以线程开始了.
方法start()(除非我错了)必须完全调用,每个线程只调用一次.因此,线程实例不能被重用,除非某种方式运行方法本身在某个短的无限循环中运行,这有利于自定义实现线程的重用.
现在javadoc 链接文本

如果可用,执行调用将重用先前构造的线程

我不明白这是如何实现的.我在执行方法的execute方法中提供了我的自定义线程,例如

  ExecutorService myCachedPool = Executors.newCachedThreadPool();
  myCachedPool.execute(new Runnable(){public void run(){  
     //do something time consuming

  }});
Run Code Online (Sandbox Code Playgroud)

如何重用我删除到执行程序框架的自定义线程?
Executor是否允许调用方法start()超过1次,而我们不能在我们的程序中?我误会了什么吗?

谢谢.

java multithreading executorservice threadpool executors

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

java vs C++通过引用传递


我对以下内容感到困惑:
在C++中,我们可以通过引用将参数传递给函数(将其声明为指针或引用变量),如果我们在函数内部修改它,则当函数返回时,更改会反映给调用者.
这不是在java中发生的,我不确定我理解为什么.

例如,这是来自对象X的方法

public boolean aMethod(int id, myClass aClass)
{
   //do some logic
   aClass = new MyClass();
   //configure argument object aClass
   return true;
}
Run Code Online (Sandbox Code Playgroud)

调用代码中:

//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
  obj.methodA();//start using the object
}
Run Code Online (Sandbox Code Playgroud)

我在C++中使用它,即返回一个通知可以使用函数参数的结果,但在java中这不起作用.
我输入if(X.aMethod(2,obj))分支,但obj为null.为什么它为空?
我没有在方法aMethod(int id,myClass aClass)中使用new分配堆中的内存地址吗?我没有在函数中传递obj的"地址"吗?我期望在调用代码中正确构造和使用obj.我误解了java中的内存吗?

c++ java function pass-by-reference

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

正确使用Eclipse 4中的ProgressMonitorDialog

我有一组API来执行文件操作,例如 saveToFile(CustomObject objectToSave);

由于文件操作可能很长,我决定应该向用户显示某些指示,例如进度条.

我读了一下ProgressMonitorDialog,所以我尝试了,但它并不完全正常,因为我需要(或者更好,我不知道如何正确使用它).

目前我这样做:

ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(theShell);  
    try {  
        progressDialog.run(false, true, new IRunnableWithProgress() {  

        @Override  
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {  
            monitor.beginTask("Saving your data", 100);  
            try {  
                Utils.saveToFile(objectToSave);  
            } catch (Exception e) {  
            // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            monitor.done();   
        }  
     });   
Run Code Online (Sandbox Code Playgroud)

这段代码非常快速地显示了一个进度对话框,但问题是在较慢的PC上这会堆叠直到Utils.saveToFile返回,而我不知道如何在保存完成之前指示中间进程.

我找到了一个提到的线程,IProgressMonitor.UNKNOWN但它没有说明在monitor期间发生的事情performRead(_fileName, monitor);

我该如何解决这个问题?

java eclipse swt jface eclipse-rcp

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

什么应该是哈希表中的关键的最佳实践

最好的查找结构是HashTable.它平均提供持续访问(在最坏的情况下是线性的).
这取决于散列函数.好.
我的问题如下.假设一个良好的实现HashTable例如HashMap是否有关于在映射中传递的密钥的最佳实践?我的意思是建议密钥必须是不可变对象但我想知道是否有其他建议.
示例键的大小?例如,在一个好的hashmap(以上述方式)中,如果我们用作String键,那么"瓶颈"是否会在字符串比较中equals(试图找到键)?钥匙要保持小吗?或者是否有不应该用作键的对象?比如一个URL?在这种情况下,您如何选择使用什么作为关键?

java algorithm hashtable hashmap data-structures

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

这个Eclipse视图是如何制作的?

Eclipse插件视图

我正在开发一个Eclipse插件,它将添加一个新的上下文菜单,当点击时会弹出一个对话框,用户可以从要安装的东西列表中进行选择.我希望我的对话框具有与所附屏幕截图相同的外观和感觉(当您编辑新插件时来自eclipse).

所以我的问题是:知道这个界面是如何制作的吗?这是HTML,如果是这样,怎么办呢?或者这是自定义Swing控件,还是这样的?我是Java的新手,所以我可能不会正确地提出这个问题,但任何帮助都会受到赞赏.

谢谢.

java eclipse eclipse-plugin

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