我有一个项目,教授给了我们一些代码.代码中有一行让我困惑:
arrayListName.sort(null);
Run Code Online (Sandbox Code Playgroud)
这个电话sort(null)的确是做什么的?
该文档说:"如果指定的比较器为null,则此列表中的所有元素都必须实现Comparable接口,并且应该使用元素的自然顺序.此列表必须是可修改的,但不需要可调整大小." 这个列表的自然顺序是什么意思?我们尝试排序的元素是电话号码.
注意:我阅读了javadoc并且我不清楚这意味着什么.英语不是我的第一语言,教授不用英语授课.我试图谷歌问题,但我仍然感到困惑,具体是什么意思.
我安装了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支持。
约翰·麦克唐纳
所以我认为这是行不通的。我将在下面尝试将建议的版本还原为JUnit 4。
我发现 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中的字符串?
我试过两种方法:
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.
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) cms 和 g1 垃圾收集器之间有什么区别,这使得 g1 更好?
大多数地方都说这是因为在 G1 中,堆被分为多个区域,然后区域的集合被标记为年轻/年老代,并且 gc 在少数区域上运行,而不是在整个堆上运行。我正在尝试进一步了解这一点,并且还有几个问题:
当 young gc 运行时(即 stop the world),它会在所有年轻代区域上运行,这意味着堆的整个年轻部分以及不少年轻代区域。那么它与 CMS 所需的时间相同吗?
增量压缩 - 混合收集 - 现在我认为 G1 具有优势,因为整个堆的并发标记不断发生,并且存在在所有年轻区域 + 少数旧区域上运行的混合 gc 周期(首先是大多数垃圾)。因此它也会继续从老一代中删除垃圾,而不是等待 Full gc 发生。这是对的吗 ?
上述几点是否正确?还有哪些其他差异使 g1 更好?
java ×5
android ×1
arraylist ×1
c# ×1
g1gc ×1
if-statement ×1
java-stream ×1
netbeans ×1
netbeans-10 ×1
sorting ×1
string ×1