检查数组是否为唯一元素

时间:2017-12-13 13:55:41

标签: java arrays

我有一个包含数字Wish[] list = {1,2,2};的数组,现在我想检查它是否有一个唯一的元素.. 我想出了一个for循环,但它不起作用: `

    public Wish nextUniqueWish() {

       Wish isUnique = null;
       for (int j = 0; j < list.length; j++) {
           for (int k = j+1;k<list.length;k++) {
               if (list[k]==list[j]) {
                   isUnique = list[j];

            }

    }

}
return isUnique;
}

2 个答案:

答案 0 :(得分:1)

你写得很好,但你需要改变它。

如果list[k]==list[j]那么它不是唯一的,那么它应该是:

Wish isUnique = new Wish("me",-1);
   for (int j = 0; j < list.length; j++) 
           if (!ArrayUtils.contains(list, list[j])) 
               Wish.setId(j);

更新

你评论我猜

    class Wish{

      int wishId; 
      String owner;

      Wunsch(String owner, int wishId){
        this.owner = owner; 
        this.wishId = wishId; 
      }

      set(int uniqId){    // setter for id
          this.id=uniqId;
      }
}

答案 1 :(得分:0)

您可以使用它来打印数组中的所有唯一值(credit):

Arrays.stream(list).boxed().collect(Collectors.groupingBy(p -> p, Collectors.counting()))
                .entrySet().stream().filter(t -> t.getValue() < 2)
                .forEach(key -> System.out.println(key.getKey()));

See online example!