0

我正在尝试从字符串数组中删除重复的元素。例如,如果输入是黄色、黄色、红色。输出将是黄色,红色。我在条件中放了什么?java中有remove方法吗?这是我做的方法:

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;
}
4

8 回答 8

3

如果您需要它并返回一个String[]数组:

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

尽管我会考虑将类型更改为 a Set<String>,因为您正在尝试存储唯一元素的列表。

于 2013-04-02T05:01:31.733 回答
0

将它们存储在哈希集或链接哈希集中。 http://docs.oracle.com/javase/6/docs/api/java/util/Set.html

于 2013-04-02T04:56:43.430 回答
0

没有从数组中删除的方法。由于数组是固定大小的内存块,您不能删除或添加任何元素。您可以为元素分配值。根据您的要求,您也可以使用 Hashset。

于 2013-04-02T04:57:29.760 回答
0

将 String[] 转换为 ArrayList < String >。ArrayList 有一个 remove 方法。检查 API 文档

于 2013-04-02T04:58:19.937 回答
0

除非这是一个学术练习,否则将元素转换为 a 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
于 2013-04-02T04:58:51.560 回答
0

您可以将元素放在一个集合中,因为它不允许重复。然后将该集合转换为数组。使用 LinkedHashSet 以便您可以按照与原始数组相同的顺序获取新数组。

String[] arr = new String[]{"Yellow","Red","Yellow","Green"};
Set<String> set = new LinkedHashSet<String>(arr);
set.toArray(new String[0]);
于 2013-04-02T05:03:56.663 回答
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()]);
} 
于 2013-04-02T05:04:43.270 回答
0

java中是否有remove方法

请注意:在 JAVA、C、C++ 中没有从简单数组中删除元素的删除或删除方法。

JAVA 中还有其他容器,如 ArrayList、LinkedList 等,您可以从中删除任何元素。

我在条件中放了什么来获得独特的元素

您可以在 Hash-Set 中插入所有元素,也可以创建一个新数组(在第一个循环之前)并在这个新数组中插入新元素。

于 2013-04-02T05:08:32.740 回答