2013-05-19 46 views
2

假设内你有一个数组,像这样:多少不同的值是数组

int [] myArray = 1,2,3,1,4,2,6,1,5,3,6,1;

如何计算数组= 6的内部中不同值的量?

+0

只需创建一个'Set',并获得它的大小。而已。 –

回答

3

int i = new TreeSet<Integer>(Arrays.asList(myArray)).size(); 

如果myArrayInteger[]型这是可行的。在你的情况下,做到这一点最简单的方法是遍历每个元素,并将其添加到组:通过转换你的阵列

Set<Integer> set = new TreeSet<Integer>(); 
for(int i : myArray) set.add(i); 
int i = set.size(); 
+0

什么是以下使用的'TreeSet'和'Set'之间的不同? – hayonj

+0

@hayonj你的情况没有太大的区别。搜索'编程到接口'。 –

1

你可以很容易地得到所有不同值转换为Set,这是不能包含重复的集合。

import java.util.TreeSet; 
import java.util.Set; 
import java.util.Arrays; 

public class TestSet { 
    public static void main(String[] args) { 
     int [] myArray = new int[]{ 1,2,3,1,4,2,6,1,5,3,6,1 }; 
     Set<Integer> s = new TreeSet<>(Arrays.asList(myArray)); 

     // count distinct values 
     System.out.println("Array: " + Arrays.toString(myArray) + " has " 
         + s.size() + " distinct values"); 
    } 
} 
+0

什么是集合和数组之间的区别? – hayonj

+0

.length()和.size()之间的区别是什么? – hayonj

+0

@hayonj在Java中,一个* collection *是从'Collection '接口继承的任何东西。数组比起集合中的任何东西都是一个* more *原始容器,因为它没有可以直接调用的方法。 'length'是一个数组的*属性*,'size()'是所有集合必须实现的'Collection '接口的一个方法。 –

相关问题