2013-05-19 3 views

ответ

3

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

Это будет работать, если myArray имеет тип Integer[]. В вашем случае, самый простой способ сделать это состоит в перебирать каждый элемент и добавить его в комплект:

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 '. Массив - это * более примитивный контейнер, чем что-либо из коллекции, потому что он не имеет методов, которые могут быть вызваны на нем напрямую. 'length' является * атрибутом * массива,' size() '- это метод интерфейса' Collection ', который все коллекции должны реализовать. –

Смежные вопросы