【问题标题】:Remove Duplicate Elements in an Array Java [duplicate]删除数组Java中的重复元素[重复]
【发布时间】:2013-03-23 06:58:45
【问题描述】:

我正在尝试从字符串数组中删除重复元素。例如,如果输入是黄色、黄色、红色。输出将是黄色,红色。我在条件中放了什么? 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;
}

【问题讨论】:

标签: java arrays


【解决方案1】:

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

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

尽管我会考虑将类型更改为 Set&lt;String&gt;,因为您正在尝试存储唯一元素列表。

【讨论】:

  • 这段代码真的有效,还有一个疑问,第二行中 String[0] 的意义是什么? ?
  • 基本上只是为toArray方法提供类型信息,如javadoc中所述
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      将 String[] 转换为 ArrayList 。 ArrayList 有一个 remove 方法。 Check API doc.

      【讨论】:

        【解决方案5】:

        除非这是一项学术练习,否则请将元素转换为 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
        

        【讨论】:

          【解决方案6】:

          你也可以试试这个....

          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()]);
          } 
          

          【讨论】:

            【解决方案7】:

            java中有remove方法吗?

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

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

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

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

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-10-13
                • 2013-05-20
                • 2018-11-04
                • 2011-03-22
                • 1970-01-01
                相关资源
                最近更新 更多