小编Deb*_*was的帖子

Java 14 记录文档中“浅不可变”的含义

我正在阅读Records的文档, 但不理解“浅不可变”一词。我们所说的浅不可变是什么意思?如果它是不可变的,为什么我们需要一个复制构造函数?为什么有两个“Hello World!”?

对于所有记录类,以下不变量必须成立:如果记录 R 的组件是 c1、c2、... cn,那么如果记录实例被复制如下:

 R copy = new R(r.c1(), r.c2(), ..., r.cn());  // copy constructor ?
Run Code Online (Sandbox Code Playgroud)

那么一定是这样的r.equals(copy)

java java-14 java-record

26
推荐指数
2
解决办法
1565
查看次数

关于清除链表的 Java 最佳实践

我正在用 java 编写一个数据结构链表(为了我的学习,我没有使用任何标准的 java 库),我想通过引用 null 来清除数据结构。请建议我哪种方法更好

1) 将列表的起始引用设为 null 就足够了。

2) 除了将 start 置空外,我将所有内部节点的所有 next 指针都取消引用为 null。这对垃圾收集器有任何帮助吗?

我看到方法 2 中的混淆在 JDK 中用于 LinkedList 实现。但我没有看到 TreeMap 相同

我正在使用 JDK 8

java collections garbage-collection java-8

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

BigInteger.ValueOf()返回缓存的对象?

我写了一个测试代码来检查相等性.我检查过Java doc,它说BigInteger是不可变的.检查静态工厂方法的文档,valueOf它看起来像返回已经缓存的不可变实例.那么为什么==在缓存的实例时返回false.

以下是适用valueOf于的Java文档BigInteger:

返回一个Big Integer,其值等于指定long的值.这种"静态工厂方法"优先于(长)构造函数提供,因为它允许重用常用的BigIntegers.

下面的代码将进入无限循环.

public static void main(String[] args) {
    while(true) {
        BigInteger a = BigInteger.valueOf(100);
        BigInteger c = BigInteger.valueOf(100);
        if (a == c) {
            break;
        }
 }
Run Code Online (Sandbox Code Playgroud)

java numbers biginteger

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

sort 包中的二分查找

我正在查看 Gosort包中的这个函数” func SearchInts(a []int, x int) int,并且好奇是否有一种直接的方法来识别切片中是否存在元素?

在 Java Arrays.binarySearch(..) 中,仅返回负值。我很好奇 golang 的 api 是否func SearchInts(a []int, x int)报告 x 不存在?不确定为什么func SearchInts(a []int, x int)不返回两个值(index,isPresent)

sorting algorithm binary-search go

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