2013-04-02 35 views
0

我想從字符串數組中刪除重複的元素。例如,如果輸入是黃色,黃色,紅色。輸出將是黃色,紅色。我在條件內添加了什麼?在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

將字符串[]轉換爲ArrayList < String>。 ArrayList有一個remove方法。 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] **的意義是什麼? ? – Aneez

+0

它基本上只是爲'toArray'方法提供類型信息,如[javadoc]中所述(http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toArray (T [])) – 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一個remove方法?

請注意:JAVA,C,C++中沒有從簡單數組中刪除元素的刪除或刪除方法。

在JAVA中還有其他容器,如ArrayList,LinkedList等,您可以從中刪除任何元素。

我該如何在有條件的條件下才能獲得獨特的元素

您可以將所有元素插入到散列集中,也可以在第一個循環之前創建一個新數組,並在這個新數組中插入新元素。