Java Stream : Create new List from 2 Lists keeping only matching values

java 8 combine two lists
java 8 merge two lists no duplicates
java merge two lists without duplicates
merge two arraylist of objects in java
merge two list of objects in java
java-stream two lists
java list
java merge two lists different types

I'm working with java streams and I have an issue. I have a List like:

[1,2,3,4,5]

and another like:

[1,3,5,7,9]

My question is how can I create a new list like:

[1,3,5]

Thanks.

There is a much simpler way than using a stream here:

List<Integer> newList = new ArrayList<>(list1);
newList.retainAll(list2);

However, as pointed out by @Holger, if the lists are large, this solution can be inefficient, so instead try:

newList.retainAll(new HashSet<>(list2));

You have a stream answer in the comments.

How to merge two ArrayLists in Java, Learn how to merge two arraylists into a combined single arraylist in Java. Using this method, we can combine multiple lists into a single list. libraries like guava or Apache commons lang, but they all use addAll() method only. Stream's flatMap() method can be used to get the elements of two or more lists in single  Approach: First create two ArrayList and add values of list. Convert the ArrayList to Stream using stream() method. Set the filter condition to be distinct using contains() method. Collect the filtered values as List using collect() method. This list will be return common element in both list.

You can also utilize the retainAll method to achieve this.

 ArrayList<Integer> newArr = new ArrayList<>(arr);   //Create a new List based off the first list
 newArr.retainAll(arr2);   //Retain only the elements in the first list and second list

In this example newArr would be [1,3,5]

10 ways to Join two Lists in Java, In this post, we will see how to join two lists in Java using Plain Java, Java 8, Guava and 1. List.addAll() List interface provides addAll(Collection) method that appends all 2. 3. 4. 5. 6. 7. 8. 9. 10. // Generic function to join two lists in Java which internally creates an anonymous inner class with an instance initializer in it. Combine advanced operations of the Stream API to express rich data processing queries. In the first part of this series, you saw that streams let you process collections with database-like operations. As a refresher, the example in Listing 1 shows how to sum the values of only expensive transactions using the Stream API.

If you have lists

List l1 = ..., List l2 = ...

You can do:

List result = l1.stream().filter(x -> l2.contains(x)).collect(Collectors.toList());

Copy a List to Another List in Java, Explore different ways to copy a List to another List in Java and a Integer is an immutable class, its value is set when the instance is created and can never change. An Integer reference can thus be shared by multiple lists and threads and It's important to keep on mind whenever using this method that,  To find common elements in two arraylists, use List.retainAll() method. This method retains only the elements in this list that are contained in the specified arraylist passed as method argument.

Merging Two Maps with Java 8, Learn different techniques for merging maps in Java 8. 8 capabilities. To be more specific, we'll examine different merging scenarios including maps having duplicate entries. 2. private static Map<String, Employee> map1 = new HashMap<>(); map3.merge(key, value, (v1, v2) -> new Employee(v1. How to get array of an specific attribute values from a list of object in java 7/8 . But those only give you Stream and Collection. For Java Guava library

Find common elements in two ArrayLists in Java, Find the common elements in both the Lists using Collection. The List 1 now contains the common elements only. Program 2: By retaining the contents of List1. First create two ArrayList and add values of list. Join two ArrayLists in Java · Iterating over ArrayLists in Java · How to find duplicate elements in a Stream in  In this tutorial, we'll discuss some examples of how to use Java Stream s to work with Map s . It's worth noting that some of these exercises could be solved using a bidirectional Map data structure, but we're interested here in a functional approach. First, we explain the basic idea we'll be using to work with Maps and Stream s.

Finding common Integers between two lists, stream() by itself is not looping); Use .distinct() to ignore duplicate elements (that is, if the first list contains a number multiple times, it only  The entriesDiffering() method returns a new Map that contains the set of common keys and ValueDifference objects as the set of values. Each ValueDifference object has a leftValue() and rightValue() methods that return the values in the two Maps respectively. 5.2. MapDifference.entriesOnlyOnRight() and MapDifference.entriesOnlyOnLeft()

Comments
  • docs.oracle.com/javase/8/docs/api/java/util/…, docs.oracle.com/javase/8/docs/api/java/util/stream/…
  • list1.stream().filter(i -> list2.contains(i)).collect(Collectors.toList());
  • As @YCF_L has shown, but if the lists get large, I’d use list1.stream().filter(new HashSet<>(list2)::contains).collect(Collectors.toList()); instead, to avoid n×m time complexity.
  • do you have any performance restrictions in terms of memory or runtime complexity? can streams be assumed to be sorted?
  • This is a really nice trick @Holger