2013-04-02 8 views
0

Я пытаюсь удалить повторяющиеся элементы из массива String. Например, если входной сигнал был Желтый, Желтый, Красный. Результатом будет желтый, красный. Что я помещаю в условное? Есть метод удаления в java? Вот метод, который я сделал:Удалить повторяющиеся элементы в массиве Java

public static String [] CompareAndDestroy(String [] array) 
{ 
String [] newarray = new String [array.length]; 
for(int i = 0; i<array.length;i++) 
{ 
    for(int j = 0;j<array.length;j++) 
    { 
    if(array[i].compareTo(array[j])==0) 
    { 

    } 
    } 
} 
return array; 
} 
+0

http://stackoverflow.com/questions/13812807/removing-duplicates-from-an-array-of-strings-without-explicit-comparison-in-jav – Abi

ответ

0

нет способа удалить из массива. Поскольку массивы являются блоком памяти фиксированного размера, вы не можете удалить или добавить какой-либо элемент. вы можете просто присваивать значения элементам. Для вашего требования вы также можете использовать Hashset.

0

Convert String [] to ArrayList < String>. ArrayList имеет метод удаления. Check API doc.

0

Если это академическое упражнение, вместо этого преобразуйте элементы в Set.

Set<String> uniqueStr = new HashSet<>(Arrays.asList(array)); 
String[] buf = new String[0]; // zero-length typed array for Set.toArray operation 
return uniqueStr.toArray(buf); // returns all unique elements 
3

Если вам это нужно, чтобы быть и возвращать String[] массив:

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

Хотя я бы рассмотреть вопрос об изменении типа к Set<String> в любом случае, так как вы пытаетесь сохранить список уникальных элементов ,

+0

Этот код действительно работает ,,, и одно сомнение ,, Каково значение ** String [0] ** во 2-й строке? ? – Aneez

+0

В основном просто предоставить информацию о типе методу 'toArray', как описано в [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toArray (Т [])) – NilsH

0

Вы можете поместить элементы в набор, поскольку он не позволяет дублировать. Затем преобразуйте этот набор в массив . LinkedHashSet используется, чтобы вы могли получить новый массив в том же порядке, что и ваш исходный массив.

String[] arr = new String[]{"Yellow","Red","Yellow","Green"}; 
Set<String> set = new LinkedHashSet<String>(arr); 
set.toArray(new String[0]); 
0

Вы также можете попробовать это ....

private static String[] arrRemove(String[] strArray) { 
    Set<String> set = new HashSet<String>(); 
    set.addAll((List<String>) Arrays.asList(strArray)); 
    return (String[]) set.toArray(new String[set.size()]); 
} 
0

Есть ли способ удалить в Java?

Обратите внимание: в JAVA, C, C++ отсутствует метод удаления или удаления, который удаляет элемент из простого массива.

В JAVA есть другие контейнеры, такие как ArrayList, LinkedList и т. Д., Из которых вы можете удалить любые элементы.

Что мне помещать внутри условного выражения для получения уникальных элементов?

Вы можете либо вставить все элементы в Hash-Set, либо создать новый массив (перед первым циклом) и вставить новые элементы в этот новый массив.

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