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

如何测试数组是否包含相同的值?[重复]

阎宾实
2023-03-14

如何检查数组中的所有元素是否相同?

这是我想到的唯一解决办法。我想知道有没有有效的?

  public boolean isSame(int [] arr) {
    
    Set<Integer> set = Arrays.stream(arr).boxed().collect(Collectors.toSet());

    return set.size() == 1;
}

共有2个答案

许华清
2023-03-14

遍历数组,比较相邻元素。如果有任何冲突,则返回false。如果通过数组,则返回true。

public boolean isSame(int[] array) {
  for (int index = 1 ; index < array.length ; ++index) {
    if (array[index-1] != array[index]) {
      return false;
    }
  }
  return true;
}
凌经赋
2023-03-14

正如@JimGarrison所说,循环是最有效的,因为一旦遇到不同的值,就可以退出。

但是,假设您希望保持简洁,您可能更喜欢:

IntStream.of(arr).distinct().count();

如果要确定不同值的确切数目,可以重复使用。

然而,如果您只想在它们都相同的情况下返回true,那么我必须推荐@eriean的建议,这样可以消除很多开销:

IntStream.of(arr).allMatch(i -> i == arr[0]);
 类似资料:
  • 我有一张地图: "key 1":"价值1", "key 2":"价值2" 以及一个数组: 我如下创建这个数组(我使用以下方法做一些与我在这里提出的问题无关的事情): 验证 String[] 是否包含 Map 中的每个值的最佳方法是什么? 我正在考虑这样做:

  • 这是一个简化的示例,但假设我想在100x100网格上生成5个唯一位置。这些位置将存储在数组[[x, y],…]中。 尝试了生成随机 x 和 y 并检查数组 [x, y] 是否已经在结果数组中的明显方法。如果是,则生成不同的值,如果不生成,则将其添加到结果数组中。 但是,这将永远不会找到重复项,因为数组在技术上是不同的对象。那么,检测数组是否包含“相等”数组/对象的首选方法是什么?

  • 我有一个值数组,我想检查它是否包含3个特定值,如果不包含,我想检查数组不包含哪些值。 3个值: 数组: 功能: 目前我认为它一次循环一个,所以它总是返回false,因为一次只检查一个值。

  • 我有一个将超时更改的,我想将其与时间值一起存储并检查是否再次出现相同的。 前任: 我想既然

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。 在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器不需要使用。