小编Fab*_*ing的帖子

在Java中组合多个列表

如果我想在Java中将两个列表合并为一个,我可以使用ListUtils.union(List list1,List list2).但是,如果我想组合多个列表呢?

这有效:

import org.apache.commons.collections.ListUtils;
List<Integer>list1=Arrays.asList(1,2,3);
List<Integer>list2=Arrays.asList(4,5,6);
List<Integer>list3=Arrays.asList(7,8,9);
List<Integer>list4=Arrays.asList(10,0,-1);
System.out.println(ListUtils.union(ListUtils.union(list1, list2),ListUtils.union(list3, list4)));
Run Code Online (Sandbox Code Playgroud)

但它看起来并不是最好的解决方案,阅读也不是特别好.可悲的ListUtils.union(list1,list2,list3,list4)是不行.使用addAll多次并为所有条目的副本创建自己的列表对我来说似乎并不理想.那么我该怎么做呢?

java list

24
推荐指数
2
解决办法
3万
查看次数

Random.nextGaussian()的真正最大值(和最小值)是多少?

从理论上讲,界限nextGaussian是积极的和消极的无限.但是,由于Random.nextDouble用于计算高斯随机数,因此不会无限接近0和1,因此存在实际限制nextGaussian.并且Random.next也不是完全统一的分布.

理论上,最大值应该是大约2.2042*10 ^ 17并且与nextDouble(参考)的53位移位有关,但这可能只是一个上限.

答案可能取决于Random.next和的确切实施StrictMath.sqrt和分布StrictMath.log.我找不到任何关于这两者的信息.

是的,我知道外部价值极不可能,但它可能是相关的,例如在游戏中RNG操纵的背景下.

java random

16
推荐指数
2
解决办法
407
查看次数

具有重复项的“containsAll”行为

官方文档( archive )containsAll只说“如果此列表包含指定集合的​​所有元素,则返回 true。”。但是,我只是测试了这个:

List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(1);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(1);
list2.add(2);
System.out.println(list1.containsAll(list2));
Run Code Online (Sandbox Code Playgroud)

结果是true,即使list1不包含第二个2

那么官方的、完全定义的行为是containsAll什么?它是否好像从两个列表中删除了所有重复项?我记得在某处读到它可能会导致重复问题,但我不知道确切的情况。

java collections list duplicates

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

如何告诉Java变量不能为null?

我有一个程序,基本上像这样:

boolean[] stuffNThings;
int state=1;
for(String string:list){
   switch(state){
      case 1:
         if(/*condition*/){
            // foo
            break;
         }else{
            stuffNThings=new boolean[/*size*/];
            state=2;
         }
      // intentional fallthrough
      case 2:
         // bar
         stuffNThings[0]=true;
   }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,情况2仅在先前存在状态1且在初始化数组后切换到状态2时才会发生。但是Eclipse和Java编译器看不到这一点,因为对于他们来说,逻辑看起来非常复杂。因此,Eclipse抱怨:

本地变量ststNThings可能尚未初始化。”

如果我将“ boolean[] stuffNThings;” 更改为“ boolean[] stuffNThings=null;”,则会切换到以下错误消息:

潜在的空指针访问:在此位置,变量ststNThings可能为空。

我也无法在顶部进行初始化,因为数组的大小仅在状态1的最终循环之后确定。

Java认为那里的数组可以为null,但我知道不能。有什么办法可以告诉Java吗?还是我肯定被迫对其进行无用的null检查?添加该代码会使代码更难于理解,因为看起来在某些情况下该值实际上并未设置为true

java null initialization

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

标签 统计

java ×4

list ×2

collections ×1

duplicates ×1

initialization ×1

null ×1

random ×1