小编elv*_*e14的帖子

为什么将列表分配为空后列表的大小不会改变?

someVoid()如果我没有错误地引用传递给它的列表,那么当该方法发生调用时。代码添加后,列表中的2个值和大小相应地变为2。这里的一切对我来说都是可以理解的(如果我犯了错误,请纠正我)。AftersomeVoid()方法将列表的引用更改为null. 问题是:为什么经过这些操作后,列表的大小仍然是2?提前致谢。

public class Test {
          List<Integer> list;
        
          public Test() {
            this.list = new ArrayList<>();
            someVoid(list);
          }
        
          private void someVoid(List<Integer> list) {
            list.add(0);
            list.add(1);
            list = null;
          }
        
          public static void main(String[] args) {
            Test test = new Test();
            System.out.println("Size is: " + test.list.size());
          }
}
Run Code Online (Sandbox Code Playgroud)

java collections stack jvm heap-memory

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

Java中toString方法的实现

当我想打印Boolean(引用类型)的空数组时,结果作为输出 #1。但是当我想打印一个原始布尔类型的空数组时,输出 #2就是结果。我知道类中的toString()方法Object默认运行。该方法的默认实现如下:

this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
Run Code Online (Sandbox Code Playgroud)

但有趣的是,为什么 Z写在原始类型的输出中,但是对于 int 是I

public class ToStringApp {
  public static void main(String[] args) {

    Boolean[] refs = new Boolean[1];
    System.out.println(refs);         
    // output #1: [Ljava.lang.Boolean;@3764951d

    boolean[] prims = new boolean[1];
    System.out.println(prims);        
    // output #2: [Z@4b1210ee

    int[] ints = new int[0];
    System.out.println(ints);
    // output #3: [I@4d7e1886

  }
}
Run Code Online (Sandbox Code Playgroud)

java arrays reference tostring primitive-types

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

使用 EXACTLY 1 流查找数组中元素对的最大差异

我正在尝试编写一个函数来查找数组(1D)中任意两个元素之间的最大差异。我已经通过多种方式解决了(我在Java中应用)

  1. 2 个嵌套循环(有效,找到差异并取最大值)
  2. 通过1 次循环迭代(有效,在返回它们的差值后找到最小值和最大值:(最大值 - 最小值))
  3. 使用流两次(有效,使用流的 min() 和 max() 函数查找最大值和最小值并返回差值)。

现在的问题是:如何编写一个函数,使用1 个流来计算数组中任意 2 个元素之间的最大差异?

这是我写的最后一篇:

public static int maxDifference(int[] arr) {
    return Arrays.stream(arr).min().orElseThrow(NoSuchElementException::new) -
           Arrays.stream(arr).max().orElseThrow(NoSuchElementException::new);
}
Run Code Online (Sandbox Code Playgroud)

java java-stream

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