小编mar*_*ace的帖子

arrayListName.sort(null)做什么?

我有一个项目,教授给了我们一些代码.代码中有一行让我困惑:

arrayListName.sort(null); 
Run Code Online (Sandbox Code Playgroud)

这个电话sort(null)的确是做什么的?

该文档说:"如果指定的比较器为null,则此列表中的所有元素都必须实现Comparable接口,并且应该使用元素的自然顺序.此列表必须是可修改的,但不需要可调整大小." 这个列表的自然顺序是什么意思?我们尝试排序的元素是电话号码.

注意:我阅读了javadoc并且我不清楚这意味着什么.英语不是我的第一语言,教授不用英语授课.我试图谷歌问题,但我仍然感到困惑,具体是什么意思.

java sorting arraylist

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

找不到NetBeans 10 JUnit Jar

我安装了NetBeans 10的新安装。尝试运行刚创建的一些初始单元测试时,出现以下错误:

<classpath><modulepath><junit>必须包括如果不是在Ant的自己的类路径的junit.jar

我可能会破解包含的构建脚本junit.jar,但我想知道:什么是解决此问题的正确方法?

NetBeans是否应该附带已经可以访问的JUnit版本?我应该以其他方式配置项目吗?如何添加到库的路径?

如何找到Ant的类路径(以及使用的是哪个版本/二进制NetBeans)?

该项目Test Libraries显示存在JUnit 5.3.1,我在那里列出了三个Jar文件:junit-jipiter-api,junit-jupiter-params,junit-jupiter-engine。但这似乎并没有被发现。

该项目是标准的Java库(无主类)。我没有添加任何“额外”或与NetBeans使用的默认项目设置混淆。刚用过基本的安装向导的东西。


回覆。来自Geertjan Wielenga的NetBeans邮件列表的回复,他指出了这个话题并回复:

是的

我们从未在NB 10中实现对基于Ant的项目的JUnit 5支持。

约翰·麦克唐纳

http://mail-archives.apache.org/mod_mbox/netbeans-users/201901.mbox/%3cCAAuDyk6WcgLaUDz0dp=4Arr7QGnwWcYey3VOeGojRRMRqVZrFA@mail.gmail.com%3e

所以我认为这是行不通的。我将在下面尝试将建议的版本还原为JUnit 4。

java netbeans netbeans-10

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

Java Spliterator 不断拆分并行流

我发现 Java 并行流有一些令人惊讶的行为。我制作了自己的Spliterator,并且生成的并行流被分割,直到每个流中只有一个元素。这似乎太小了,我想知道我做错了什么。我希望我可以设置一些特征来纠正这个问题。

这是我的测试代码。在Float这里仅仅是一个虚拟的有效载荷,我真正的流类稍微复杂一些。

   public static void main( String[] args ) {
      TestingSpliterator splits = new TestingSpliterator( 10 );
      Stream<Float> test = StreamSupport.stream( splits, true );
      double total = test.mapToDouble( Float::doubleValue ).sum();
      System.out.println( "Total: " + total );
   }
Run Code Online (Sandbox Code Playgroud)

此代码将不断拆分此流,直到每个流Spliterator都只有一个元素。这似乎太多了,效率不高。

输出:

run:
Split on count: 10
Split on count: 5
Split on count: 3
Split on count: 5
Split on count: 2
Split on count: 2
Split on count: 3
Split on count: 2 …
Run Code Online (Sandbox Code Playgroud)

java java-stream

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

为什么两个相等的字符串不匹配?

我想比较服务器响应字符串,但是在测试两个字符串时我得到一个错误的结果.为什么?

我找到了这个但没有帮助:我如何比较Java中的字符串?

我试过两种方法:

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));
String code;
if(Objects.equals((code = in.readLine()), "S")) { //Input string: "S"
    //code
}
Run Code Online (Sandbox Code Playgroud)

 

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF8"));
String code;
if((code = in.readLine()).equals("S")) { //Input string: "S"
    //code
}
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下代码都不会运行,因为测试的值为false.

完整代码

服务器端 - C#(Windows)

class ManagePhoneClients
    {
        public void managePhoneClients(object obj)
        {
            Boolean socketalive = true;
            TcpClient tcpClient = (TcpClient)obj;
            StreamReader sr = new StreamReader(tcpClient.GetStream(), Encoding.UTF8);
            StreamWriter sw = …
Run Code Online (Sandbox Code Playgroud)

c# java string android if-statement

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

Java - CMS 与 G1 垃圾收集器

cms 和 g1 垃圾收集器之间有什么区别,这使得 g1 更好?

大多数地方都说这是因为在 G1 中,堆被分为多个区域,然后区域的集合被标记为年轻/年老代,并且 gc 在少数区域上运行,而不是在整个堆上运行。我正在尝试进一步了解这一点,并且还有几个问题:

  1. 当 young gc 运行时(即 stop the world),它会在所有年轻代区域上运行,这意味着堆的整个年轻部分以及不少年轻代区域。那么它与 CMS 所需的时间相同吗?

  2. 增量压缩 - 混合收集 - 现在我认为 G1 具有优势,因为整个堆的并发标记不断发生,并且存在在所有年轻区域 + 少数旧区域上运行的混合 gc 周期(首先是大多数垃圾)。因此它也会继续从老一代中删除垃圾,而不是等待 Full gc 发生。这是对的吗 ?

上述几点是否正确?还有哪些其他差异使 g1 更好?

java garbage-collection g1gc concurrent-mark-sweep

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