Java 从ArrayList中获取唯一值

Java 从ArrayList中获取唯一值

ArrayList是Java Collection Framework的一个类,实现了List接口。它是一种线性结构,按顺序存储和访问每个元素。它允许存储重复元素,但是有一些方法可以帮助从ArrayList中获取唯一值。在本文中,我们将通过Java示例程序来看到这些方法的实际实现。

从ArrayList获取唯一值的Java程序

在跳转到解决给定问题的程序之前,让我们讨论Collection接口的以下概念。

HashSet

HashSet是Java Collection接口的一个类,实现了set接口。它与数学集合非常相似。在其中,所有的元素按排序方式存储,从而减少检索时间,并且不允许重复值。这就是使用HashSet过滤重复项并从列表中获取唯一值的原因。

语法

HashSet< Type >nameOfSet = new HashSet<>();

这里,Type是一个封装类对象,而不是原始数据类型。

ArrayList语法

ArrayList<Type> nameOflist = new ArrayList< Type >();

方法1

  • 创建一个类型为Integer的ArrayList对象,并使用名为’add()’的内置方法将一些元素存储到其中。这个方法接受一个参数,并将其添加到指定的列表中。

  • 现在,创建一个相同类型的HashSet,并使用内置方法’addAll()’将前一个ArrayList的所有元素存储到其中。该方法接受一个ArrayList作为参数,并将其所有元素添加到新指定的列表中。

  • 最后,通过调用列表来打印值。

示例

以下示例演示了使用HashSet类从ArrayList获取唯一值。

import java.util.*;
public class Unique {
   public static void main(String[] args) {
      // Creating arraylist
      ArrayList<Integer> araylist = new ArrayList<Integer>();

      // Adding elements in arraylist
      araylist.add(8);
      araylist.add(5);
      araylist.add(2);
      araylist.add(9);
      araylist.add(2);
      araylist.add(4);
      araylist.add(9);
      araylist.add(7);
      System.out.println("List with duplicate elements: ");

      // loop to iterate through elements
      for(int i = 0; i < araylist.size(); i++ ) {
         // to print the elements in the list
         System.out.println(araylist.get(i));
      }
      HashSet<Integer> set = new HashSet<>(); // creating hashset
      set.addAll(araylist); // adding all elements to set
      System.out.println("List with unique elements: " + set);
   }
}

输出

List with duplicate elements:
8
5
2
9
2
4
9
7
List with unique elements: [2, 4, 5, 7, 8, 9]

方法2

  • 创建一个类型为Integer的ArrayList对象,并通过使用名为’add()’的内建方法向其中存储一些元素。该方法接受一个参数并将其添加到指定的列表中。

  • 现在,创建另一个相同类型的ArrayList对象。

  • 定义一个循环,循环到ArrayList的大小。在这个循环内部,使用一个if语句块来检查索引’i’处的值是否唯一。如果是唯一的,则将该值添加到新的ArrayList中,否则舍弃。

  • 最后,通过调用列表来打印这些值。

示例

这是另一个示例,我们将尝试从一个ArrayList中获取唯一的值。

import java.util.*;
public class Unique {
   public static void main(String[] args) {
      // Creating arraylist
      ArrayList<Integer> araylist1 = new ArrayList<Integer>();
      // Adding elements in arraylist
      araylist1.add(8);
      araylist1.add(5);
      araylist1.add(2);
      araylist1.add(9);
      araylist1.add(2);
      araylist1.add(4);
      araylist1.add(9);
      araylist1.add(7);
      System.out.println("List with duplicate elements: " + araylist1);
      ArrayList<Integer>araylist2 = new ArrayList<Integer>();
      for(int i = 0; i < araylist1.size(); i++ ) {
         int elem;
         // to filter the duplicate elements
         if(!araylist2.contains(araylist1.get(i))) {
            // storing unique elements to elem and adding to new list
            elem = araylist1.get(i);
            araylist2.add(elem);
         }
      }
      System.out.println("List with unique elements: " + araylist2);
   }
}

输出

List with duplicate elements: [8, 5, 2, 9, 2, 4, 9, 7]
List with unique elements: [8, 5, 2, 9, 4, 7]

结论

我们在本文中首先定义了ArrayList,并在下一节中了解到了使用HashSet在列表中找到唯一值的用法。我们讨论了从ArrayList中获取唯一值的两种方法,第一种是使用HashSet类,第二种是不使用该类。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程