Java中从ArrayList获取唯一值
ArrayList是Java集合框架的一个类,它实现了List接口。它是一个线性结构,按顺序存储和访问每个元素。它允许存储重复元素,但是,有一些方法可以帮助从ArrayList中获取唯一值。在这篇文章中,我们将通过Java示例程序来了解这些方法的实际实现。
Java程序从ArrayList获取唯一值
在跳转到给定问题的解决方案程序之前,让我们讨论一下集合接口的以下概念:
HashSet
它是Java集合接口的一个类,它实现了Set接口。它与数学集合非常相似。在其中,所有元素都以排序的方式存储,这减少了检索时间,并且它不允许重复值。这就是使用HashSet来过滤重复项并从列表中获取唯一值的原因。
语法
HashSet< Type >nameOfSet = new HashSet<>();
这里,Type是包装类对象,而不是原始数据类型。
ArrayList语法
ArrayList<Type> nameOflist = new ArrayList< Type >();
方法一
创建一个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]
方法二
创建一个Integer类型的ArrayList对象,并使用名为“add()”的内置方法向其中存储一些元素。此方法接受一个参数并将其添加到指定的列表中。
现在,创建一个相同类型的另一个ArrayList对象。
定义一个for循环,它将迭代到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类,第二种不使用此类。