Java教程

如何在Java中比较两个ArrayList

如何在Java中比较两个ArrayList

有以下方法可以在Java中比较两个ArrayList:
Java equals()方法 Java removeAll()方法 Java retainAll()方法 Java ArrayList.contains()方法 Java contentEquals()方法 Java Stream接口

Java equals()方法

List 接口的Java equals()方法比较指定对象与平等的清单。它会覆盖 Object 类的 equals()方法。
语法
boolean equals(Object o)
此方法接受要与列表进行相等性比较的 对象。如果指定对象等于列表,则返回 true ,否则返回 false
示例
在下面的示例中,我们创建了两个ArrayList firstList secondList 。通过使用 equals()方法比较两个列表,它将返回true。我们在 secondList 中添加了另一个元素,以在firstList和secondList之间创建区别。现在,如果我们执行比较,它将返回 false
import java.util.*;
public class ComapreArraylistExample1
{
    public static void main(String args[])
{
        ArrayList<String> firstList=new ArrayList<String>();
        firstList.add("Apple");
        firstList.add("Pears");
        firstList.add("Guava");
        firstList.add("Mango");
        System.out.println(firstList);
        List<String> secondList=new ArrayList<String>();
        secondList.add("Apple");
        secondList.add("Pears");
        secondList.add("Guava");
        secondList.add("Mango");
        System.out.println(secondList);
        boolean boolval = firstList.equals(secondList);
        System.out.println(boolval);
        secondList.add("Papaya");
        boolean bool = firstList.equals(secondList);
        System.out.println(bool);
    }
}
输出
[Apple, Pears, Guava, Mango]
[Apple, Pears, Guava, Mango]
true
false

Java removeAll()方法(查找丢失的元素)

Array Array 类的Java removeAll()方法是用于从列表中删除指定集合中包含的所有元素。它会覆盖 AbstractCollection 类的 removeAll()方法。
语法
public boolean removeAll(Collection<?> c)
此方法接受 Collection 作为参数,其中包含要从此列表中删除的元素。如果此列表因调用而更改,则返回 true
示例
在以下示例中,我们创建了两个ArrayList firstList secondList removeAll()方法将删除firstList的所有元素,因为除了 Papaya 以外,secondList中也存在相同的元素。因此, 木瓜 firstList 中缺少的元素。因此,它返回 木瓜。如果两个列表具有相同的元素,则该方法将返回一个 空列表[]
import java.util.*;
public class ComapreArraylistExample2
{
    public static void main(String args[])
{
        ArrayList<String> firstList=new ArrayList<String>();
        firstList.add("Apple");
        firstList.add("Pears");
        firstList.add("Guava");
        firstList.add("Peach");
        ArrayList<String> secondList=new ArrayList<String>();
        secondList.add("Apple");
        secondList.add("Pears");
        secondList.add("Papaya");
        secondList.add("Peach");
        secondList.removeAll(firstList);
        System.out.println(secondList);
    }
}
输出
[Papaya]
让我们看一下removeAll()方法的另一个示例,该方法从firstList返回不存在的元素是secondList。
示例
import java.util.*;
public class ComapreArraylistExample3
{
    public static void main(String args[])
{
        ArrayList<Integer> firstList=new ArrayList<Integer>(Arrays.asList(12, 4, 67, 90, 34));
        System.out.println("First array list: ");
        System.out.println(firstList);
        List<Integer> secondList=new ArrayList<Integer>(Arrays.asList(12, 4, 67, 0, 34));
        System.out.println("Second array list: ");
        System.out.println(secondList);
        firstList.removeAll(secondList);
        System.out.println("Un-common element of the first list: ");
        System.out.println(firstList);
    }
}
输出
First array list:
[12, 4, 67, 90, 34]
Second array list:
[12, 4, 67, 0, 34]
Un-common element of the first list:
[90]

Java keepAll()方法(返回两个列表中的公共元素)

ArrayList 的Java retainAll()方法类仅保留其他列表中也包含的列表元素。它会覆盖 AbstarctCollection 类的 retainAll()方法。
语法
public boolean retainAll(Collection<?> c)
此方法接受 Collection 作为参数,该参数包含要保留在列表中的元素。如果此列表因调用而更改,则返回 true
示例
例如,我们使用 Arrays 类的 asList()方法创建了两个ArrayList firstList secondList 。 asList()方法返回指定数组的列表视图。
import java.util.*;
public class ComapreArraylistExample4
{
    public static void main(String args[])
{
        ArrayList<String> firstList=new ArrayList<String>(Arrays.asList("M", "W", "J", "K", "T"));
        System.out.println("First arraylist: ");
        System.out.println(firstList);
        List<String> secondList=new ArrayList<String>(Arrays.asList("M", "W", "E", "K", "T"));
        System.out.println("Second arraylist: ");
        System.out.println(secondList);
        secondList.retainAll(firstList);
        System.out.println("Common elements in both list: ");
        System.out.println(secondList);
    }
}
输出
First arraylist:
[M, W, J, K, T]
Second arraylist:
[M, W, E, K, T]
Common elements in both list:
[M, W, K, T]

Java ArrayList.contains()方法

Java ArrayList.contains()方法用于比较不同ArrayList的两个元素。 Java ArrayList.contains()方法将覆盖 AbstrarctCollection 类的 contains()方法。
语法
public boolean contains(Object o)
此方法解析要检查其在列表中是否存在的元素。如果元素匹配,则返回 true ,否则返回 false
示例
在此示例中,我们创建了两个 String 类型的ArrayList firstList secondList 。我们已经使用 contains()方法比较了这些ArrayList。如果firstList的元素与secondList的元素匹配,则返回 并将此值存储在 thirdList 中。同样,如果元素不匹配,则返回
import java.util.ArrayList;
import java.util.Arrays;
public class ComapreArraylistExample5
{
    public static void main(String [] args)
{
        ArrayList<String> firstList= new ArrayList<String>(Arrays.asList("Good", "Morning", "Students"));
        ArrayList<String> secondList= new ArrayList<String>(Arrays.asList("Good", "Night", "frineds"));
        ArrayList<String>thirdList= new ArrayList<String>();
        for(String tempList : firstList)
        thirdList.add(secondList.contains(tempList) ? "Yes" : "No");
        System.out.println(thirdList);
    }
}
输出
[Yes, No, No]

Java contentEquals()方法

Java contentEquals()方法将 String StringBuffer 并返回 布尔值值。它属于 String 类。
语法
public boolean contentEquals(StringBuffer sb)
此方法接受StringBuffer作为与String比较的参数。如果String表示与指定StringBuffer相同的字符序列,则返回 true ,否则返回 false
示例
在此示例中,我们创建了两个类型为 String 的ArrayList firstList secondList 。我们创建了一个静态方法 compareList(),该方法将两个ArrayList ls1 ls2 解析为一个参数,并返回一个 boolean 价值。该方法将列表转换为 String contentEquals()方法将String与指定的StringBuffer进行比较。
我们在secondList中添加了另一个元素,以创建两个列表之间的差异,然后再次调用 compareList()方法,该方法返回 false
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ComapreArraylistExample6
{
    //defining method
public static boolean compareList(ArrayList ls1, ArrayList ls2)
{
        //converts List into String and checks string are equal or not
return ls1.toString().contentEquals(ls2.toString())?true:false;
    }
    public static void main(String[] args)
{
        ArrayList<String> firstList = new ArrayList<String>(Arrays.asList("Java", "Python", "Ruby", "Go"));
        ArrayList<String> secondList = new ArrayList<String>(Arrays.asList("Java", "Python", "Ruby", "Go"));
        System.out.println("When Lists are same: "+compareList(firstList, secondList));
        secondList.add("C++");
        System.out.println("When Lists are not same: "+compareList(firstList, secondList));
    }
}
输出
When Lists are same: true
When Lists are not same: false

Java流接口

Java 是一个接口。它属于 java.util 软件包。它提供了 filter()方法来根据给定元素过滤流元素。这是一个 中间过程。
语法
Stream<T> filter(Predicate<? super T> predicate)
此方法接受 谓词(功能接口)作为参数并返回新的结果元素流。

collect()方法

下面的示例中使用的另一种方法是 Stream 接口的 collect()方法。
它在使用收集器的流元素。收集器封装用作收集参数的函数(Supplier,BiConsumer,BiConsumer)。它允许 重用收集策略和收集操作的组成。这是 终端操作。
语法
<R,A>R collect(Collector<? super T,A,R> collector)

Collectors.toList()方法

toList() Collectors 类的静态方法。它属于 java.util.Stream.Collectors 类。
语法
public static <T>Collector<T, ?, List< T>>toList()
其中 T 是元素的类型。它返回一个 收集器,该收集器将所有输入元素按遇到(无序)顺序收集到一个列表中。
示例
在下面的示例中,我们创建了两个String类型的ArrayList firstList secondList filter()方法返回两个列表中都存在的常见元素的列表。
import java.util.*;
public class CompareArrayListExample7 {
    public static void main(String[] args) {
        ArrayList<String> firstList = new ArrayList<String>
        (Arrays.asList("Java", "Python", "Ruby", "Go"));
        System.out.println("First List: "+firstList);
        ArrayList<String> secondList = new ArrayList<
        String>(Arrays.asList("Java", "Python", "Ruby", "Go", "Perl"));
        System.out.println("Second List: "+secondList);
        System.out.print("Common elements: " +firstList.stream().filter(secondList::contains).collect(Collectors.toList()));
    }
}
输出
First List: [Java, Python, Ruby, Go]
Second List: [Java, Python, Ruby, Go, Perl]
Common elements: [Java, Python, Ruby, Go]

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4