2017-02-21 3 views
0

я пытаюсь удалить повторяющиеся значения из моего массива настоящее время я мой андроид проект мой массив,сравнение и добавление элемент массива

String [] standard = {"7", "7", "8", "7", "8", "7", "6"}; 

я хочу только уникальные значения, которые будут храниться в array.like {7 , 8, 6}. Я пытаюсь использовать это, сравнивая каждый элемент массива с самим собой, а затем добавляю его в массив. Я пробовал поиск по Google, но я не смог решить эту проблему. Я имею в виду, что я где-то ошибаюсь.

как решить это, используя тот же способ, который я пытаюсь решить.

+0

попробовать этот http://stackoverflow.com/a/203992/1849024 – imsome1

+0

использовать набор из коллекции –

+0

пожалуйста, Google и пытаются найти ответы на переполнение стека первых, перед публикацией дубликата вопрос. –

ответ

0

согласно этой ссылке link

Вы можете сделать это в одной строке в Java 7:

String[] unique = new HashSet<String>(Arrays.asList(array)).toArray(new String[0]); 

и короче и проще в Java 8:

String[] unique = Arrays.stream(array).distinct().toArray(new String[0]); 
+0

Что вы добавляете к [богемскому ответу] (http://stackoverflow.com/a/13797185/4391450)? Вы можете указать дубликат, если хотите (я думаю, что у вас достаточно репутации) или комментарий с помощью этой ссылки ответа. – AxelH

4

Вы не что вы используете массив, но одно решение проблемы заключается в использовании структуры данных набора. Следующим образом. Set не позволяет вставлять повторяющиеся значения.

Set<String> setExam = new HashSet<>(); 

    setExam.add("1"); 
    setExam.add("2"); 
    setExam.add("1"); 

вы также можете преобразовать массив для установки следующим

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray)); 

Набор будет содержать только значения 1 и 2. Это не будет содержать повторяющиеся значения.

+0

Спасибо. Помогли здесь. – statosdotcom

+0

@statosdotcom Рад, что я мог бы помочь. –

0
HashSet set=new HashSet(); 
String [] standard = {"7", "7", "8", "7", "8", "7", "6"}; 
for(int i=0;i<standard.length;i++){ 
    set.add(standard[i]); 
} 
Iterator iter = set.iterator(); 
while(iter.hasNext()) { 
    System.out.println(iter.next()); 
} 
0

Если вы хотите сделать это только с помощью массива, вы можете использовать это.

1) Sort the string array. 
2) Use another array to store ans. 
3) Store first element of your standard array to new array. 
4) Compare from second element of the array, and if two elements are different add that element to ans array. 

Просмотреть код.

public static void main(String args[]) throws Exception 
{  
    String [] standard = {"7", "7", "8", "7", "8", "7", "6"}; 

    System.out.println(); 

    Arrays.sort(standard); 

    String Ans[] = new String[100]; 

    int k = 0; 

    Ans[k++] = standard[0]; 

    for(int i = 1 ; i < standard.length ; i++) 
    { 
     if(!standard[i-1].equals(standard[i])) 
      Ans[k++] = standard[i]; 
    } 

    for(int i = 0 ; i < 100 && Ans[i] != null; i++) 
     System.out.print(Ans[i] + " "); 
}