当前位置: 首页 > 知识库问答 >
问题:

如何有效地将集合转换为数组?

杨豪
2023-03-14

所以我试图生成一个数组,其中填充了唯一的随机整数,我发现用arraylist来实现这一点是最有效的方法。

public static int [] randArr(int n, int max){
       randArr = new int[n];
       Random rn = new Random();
       Set<Integer> test = new HashSet<Integer>();
       
      while(test.size() < n){
      test.add(rn.nextInt(0, max));
 
        }
}

现在我试着使用randArr=test。toArray()但我不太确定括号里应该放什么,也不确定这是否真的能起作用。有没有其他转换方法,因为我不能简单地通过test将test的整数赋值给randArr。使用for循环获取(i)

共有1个答案

涂玉韵
2023-03-14

不要使用套装<代码>流随机数,使用distinct删除DUP,使用limit

public static int [] randArr(int n, int max){
    Random rn = new Random();
    return rn.ints(0,max).distinct().limit(n).toArray(); 
}

笔记:

  • 确保n是

您可能希望输入一些代码来强制执行这些不变量,如果不符合要求,则抛出适当的异常。类似下面的内容(或任何对你有意义的内容)。

if (n > max || max <= 0) {
   throw new IllegalArgumentException(
                "n(%d) <= max(%d) or max > 0 not in compliance"
                .formatted(n,max));
}

 类似资料:
  • Set似乎是一种创建具有保证唯一元素的数组的好方法,但它不提供任何获取属性的好方法,除了generator[Set].values,它以的尴尬方式调用。 如果您可以在集合上调用和类似的函数,那么这是可以的。但你也不能那样做。 我尝试过,但似乎只转换了类数组(NodeList和TypedArrays?)对象设置为数组。再试一次:对Sets不起作用,set.prototype没有类似的静态方法。 那么

  • 问题内容: 我具有以下功能,可以将PDF转换为一系列图像(每页一个图像): 这可以很好地工作,性能并没有那么快,但这并不重要。我的问题与内存消耗有关。假设我要转换一个较长的PDF(Apple的10-Q,长达51页): 到最后一页的末尾,内存使用量一直增加到〜11GB! 我还注意到一些注意事项: 当我通过Instruments运行此程序时,它出乎意料地显示没有泄漏。两个大记忆猪是和。它们似乎没有在两

  • 如何将集合转换为数组?给出了三个关于将集合转换为数组的答案,这些答案目前都无法在Chrome浏览器中使用。 假设我有一个简单的集合 我可以迭代我的变量并将元素添加到一个空数组中 但是,还有其他更广泛的浏览器支持的方法吗?

  • 问题内容: 我目前在一个项目中,需要执行一些步骤,以处理旧版Matlab代码(使用Matlab引擎),其余部分则使用Python(numpy)进行处理。 我注意到,将结果从Matlab转换为numpy的速度似乎非常慢。 这是一些示例代码,用于从另一个ndarray,列表和mlarray创建具有1000个元素的ndarray: 这需要以下时间: 转换所需时间约为列表转换的100倍。 有什么办法可以加

  • 现有两个名为getDetails(…)的方法 。一个需要至少一个必需参数,另一个需要一个集合(不验证集合的内容/大小)。 问题是集合有时会作为空传递,并且根据我的业务案例,我总是期望至少传递一个值。因此,我需要将该方法设为私有,它接受集合。 我计划将下面的方法作用域设置为private,这样调用者就不会使用零属性调用此方法。 调用方方法之一是将集合对象传递给下面的getDetails, id.ge

  • 我想在Scala中映射Java数组。对于普通的Java集合,我知道我可以使用 但是,对于阵列,此转换不起作用: 那么,如何将Java数组转换为Scala集合、iterable或可以映射的对象呢?