2013-05-19 76 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 '接口的一個方法。 –

相關問題