如果我有一个说4个值的数组,并且所有值都相同。是否可以使用诸如array.length或size之类的东西,以便返回的长度仅为1。
答案 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.List
或java.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.