小编Por*_*os3的帖子

Java Streams - 过滤先前过滤的值

我正在尝试使用Java的Streams,并试图找出可能的内容以及它们的优点和缺点.目前我正在尝试使用流来实现Eratosthenes的Sieve,但似乎找不到循环使用先前过滤的值而不将它们存储在单独的集合中的好方法.

我想要完成这样的事情:

IntStream myStream = IntStream.range(0,3);
myStream.filter(s -> {
    System.out.print("[filtering "+s+"] ");
    myStream.forEach(q -> System.out.print(q+", "));
    System.out.println();
    return true; //eventually respond to values observed on the line above
});
Run Code Online (Sandbox Code Playgroud)

具有所需的输出:

[filtering 0] 
[filtering 1] 0, 
[filtering 2] 0, 1, 
[filtering 3] 0, 1, 2, 
Run Code Online (Sandbox Code Playgroud)

请注意,在过滤每个新值时,会观察到所有先前过滤的值.这样可以轻松实现Eratosthenes的Sieve,因为我可以过滤掉所有非素数值,并且每个新值都可以检查以前通过素数过滤器的所有数字的可分性.

但是,上面的示例在NetBeans中给出了一个错误:

local variables referenced from a lambda expression must be final or effectively final
Run Code Online (Sandbox Code Playgroud)

这似乎是因为我在已经作用于myStream的过滤器中引用了myStream.是否有任何解决此错误的好方法(即,制作仅包含到目前为止已过滤的值的流的最终副本),或者是否有更好的方法解决此类问题而不使用单独的集合来存储值?

java lambda filter java-8 java-stream

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

Big-O用于公钥加密

我一直在搜索几天,但是我找不到一个用于加密,解密或试图破解使用公钥加密的加密文件(暴力)的大O表示法算法.我试图确定我开发的大量使用公钥加密的想法的大O符号.

与公钥加密相关的这些Big-O算法是什么:

A)使用L长度密钥加密由N个字符组成的文件

B)解密同一个文件

C)典型的强力算法,用于打破具有N个字符且最大密钥长度为L的加密文件

任何包含用于破解加密的更有效算法的Big-O表示法都将受到赞赏.此外,还可以参考可以找到此材料的任何位置.

很抱歉提出一个我真的应该能够自己找到的问题,但我没有设法找到我想要的东西.

big-o cryptography public-key-encryption

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

JavaFX OnDragDropped未注册

我试图将标签拖放到彼此之上.

我有一个名为starsAndBars的标签列表,每个标签在创建时都会调用它:

private void giveDragAndDropProperties(Label label) {
    //Enable drag actions to pick up the label
    label.setOnDragDetected(new EventHandler<MouseEvent>() {
        public void handle(MouseEvent event) {
            System.out.println("Drag and drop started!");

            Dragboard db = label.startDragAndDrop(TransferMode.ANY);
            ClipboardContent content = new ClipboardContent();
            int index = starsAndBars.indexOf(label);
            content.putString("test");
            db.setContent(content);

            event.consume();
        }
    });

    label.setOnDragEntered(new EventHandler<DragEvent>() {
        public void handle(DragEvent event) {
            System.out.println("drag entered!");
        }
    });

    label.setOnDragExited(new EventHandler<DragEvent>() {
        public void handle(DragEvent event) {
            System.out.println("drag left!");
        }
    });

    //Enable a label to be dropped on this label
    label.setOnDragDropped(new EventHandler<DragEvent>() …
Run Code Online (Sandbox Code Playgroud)

java drag-and-drop javafx

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

如何在文件树中创建带有入口点的 jar 文件?

我正在尝试使用以下命令创建 jar 文件:

jar -cef ./bin/a/MainClass formatter.jar ./bin/*
Run Code Online (Sandbox Code Playgroud)

其中 bin 包含两个带有类文件的文件夹(假设“./bin/a/”和“./bin/b/”)。

我可以很好地创建 jar,但我似乎无法让它正确执行。它运行时无需打印或执行任何操作。我认为它一定没有使用我提供的入口点。

MainClass 有一个简单的 main 方法:

public static void main(String[] args) {
   System.out.println("HIT");
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?jar 是否需要与包含 main 的类创建在同一文件夹中?

根据要求编辑:jar -tf:

C:\Users\Jonathan\Documents\Workspace\JavaAutoFormatter>jar -tf formatter.jar
META-INF/
META-INF/MANIFEST.MF
bin/a/
bin/a/MainClass.class
bin/a/ParsedFile.class
bin/b/
bin/b/Token.class
bin/b/Tokenifier.class
Run Code Online (Sandbox Code Playgroud)

java jar entry-point

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

Java文件IO写

我似乎无法写入文件.我成功创建了文件和目录,并没有遇到任何异常,但是当我打开文件时,它没有写入任何行.

是否有可能我需要以某种方式保存对文件的更改?或者是否有其他方式我可能不会最终看到变化,即使它已经被认为是?

File stalkerFolder = new File("plugins/logs");
File logFile = new File("plugins/logs/log.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;
boolean error = false;
try{
    if(!folder.exists()){
        folder.mkdir();
    }
    logFile.createNewFile();
}catch(Exception e){}
try{
    fw = new FileWriter("plugins/logs/log.txt");
    fr = new FileReader("plugins/logs/log.txt");
    writer = new BufferedWriter(fw);
    reader = new BufferedReader(fr);
} catch(Exception e){
    System.err.println("ERROR: CANNOT READ OR WRITE TO LOG FILE");
    System.err.println("Plugin terminated.");
    error = true;
}

System.out.println("writing to log");
//Record to log
        try{
            writer.write("test log message");
        }catch(Exception e){
            System.err.println("could not write …
Run Code Online (Sandbox Code Playgroud)

java io file

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

仅使用Java访问一次Reddit .json页面时的HTTP 429请求过多

当我尝试使用Java使用.json扩展名访问任何Reddit页面时,收到HTTP 429太多请求响应。

我发现使用Java代码在这里不做任何修改(除更改目标URL)。我正在尝试访问以下URL:

我可以使用浏览器很好地访问这些页面,但是尽管我每次都发出一个请求并在两者之间等待,但无法以编程方式访问它们。一分钟内发出30多个请求时,Reddit返回此消息,但我的请求量远远少于此,并且我的网络上没有其他人使用Reddit。

有谁熟悉这个,为什么我会出现这些错误?是否会有更好的方法使用Java来解决此问题?

java api json reddit http-status-code-429

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