将Array.length与数组中的重复值一起使用

时间:2018-06-26 16:13:27

标签: java arrays

如果我有一个说4个值的数组,并且所有值都相同。是否可以使用诸如array.length或size之类的东西,以便返回的长度仅为1。

7 个答案:

答案 0 :(得分:2)

使用如下所示的内容,并删除数组中的Duplicate Element并从数组中生成集:

Integer[] array = ... Set<Integer> mySet = new LinkedHashSet<Integer>(Arrays.asList(array ))

您的数组保持不变,您可以通过以下方式找到大小:

mySet.size()

答案 1 :(得分:1)

不适用于Array API。您必须构建数组中元素的Set,因此,由于Set不能包含重复项,因此.size()方法将返回1。

(实际上,Set::size()返回放置在Set中的不同元素的数量)

答案 2 :(得分:1)

您可以尝试使用Map来处理唯一值吗?

或者制作一个静态util类,在其中解析数组并找到唯一值并返回它们的数量。

但是最简单的方法是,从here中获取整数数组列表中的唯一值:

Integer[] numbers = {1, 1, 2, 1, 3, 4, 5};
Set<Integer> uniqKeys = new TreeSet<Integer>();
uniqKeys.addAll(Arrays.asList(numbers));
System.out.println("uniqKeys: " + uniqKeys);

答案 3 :(得分:1)

对于非基本数组,您可以创建一个集合并返回该集合的大小:

Integer[] array = new Integer[4];
array[0] = 1;
array[1] = 1;
array[2] = 1;
array[3] = 1;
Set<Integer> set = new HashSet<>(Arrays.asList(array));
System.out.println(set.size()); //1

答案 4 :(得分:1)

java.util.Listjava.util.Arrays没有提供类似的功能,但是您可以使用Stream-API获得类似的功能:

int nrOfUniqueElems = Arrays.stream(myArray).distinct().count();

答案 5 :(得分:1)

您可以使用以下代码示例在一行中完成它

new HashSet(Arrays.asList(<your-array-object>).size();

答案 6 :(得分:0)

您可以运行一个for循环,如果元素是唯一的,则将元素添加到另一个数组中;如果它们与其他数组元素相同,则不会将它们添加到新数组中。这是一个示例:

public class ChapterOneBasics {

      public static void main(String[] args){

      int ar[] = {1, 1, 1, 1};
      int ar2[] = {1};

      for(int x = 0; x <= ar.length; x++) {
          if(x > 0) {
               if(ar[x] != ar[x - 1]) {
                     ar2[x] = ar[x];
            }
        }
    System.out.println(ar2.length + " is the size of the array uniqueness.");
      }
   }
}

输出:

1 is the size of the array uniqueness.