package com.demo;
// --
// imports for output
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
// --
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Demo {
@Getter
@RequiredArgsConstructor
public static class Keys {
private final String key1;
private final String key2;
}
public static void main(String[] args) throws JsonProcessingException {
//List1
List<String> list1 = Arrays.asList("A", "B", "C");
//List2
List<Keys> list2 = Arrays.asList(
new Keys("obj1", "A"),
new Keys("obj2", "B"),
new Keys("obj3", "D"),
new Keys("obj4", "F")
);
List<Keys> filteredList =
//create sequential stream over the elements of list2
list2.stream()
//filter using lambda
.filter(
//x - element of type Keys
x
->
//predicate returns true - if list1 contains key2 value of stream element
list1.contains(x.key2)
)
//collect stream to list
.collect(
//default list collector
Collectors.toList()
);
//output with pretty printer
ObjectWriter objectWriter = new ObjectMapper().writerWithDefaultPrettyPrinter();
System.out.println(objectWriter.writeValueAsString(filteredList));
}
}
package com.demo;
// --
// imports for output
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
// --
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Demo {
@Getter
@RequiredArgsConstructor
public static class Keys {
private final String key1;
private final String key2;
}
public static void main(String[] args) throws JsonProcessingException {
//List1
List<String> list1 = Arrays.asList("A", "B", "C");
//List2
List<Keys> list2 = Arrays.asList(
new Keys("obj1", "A"),
new Keys("obj2", "B"),
new Keys("obj3", "D"),
new Keys("obj4", "F")
);
List<Keys> filteredList =
//create sequential stream over the elements of list2
list2.stream()
//filter using lambda
.filter(
//x - element of type Keys
x
->
//predicate returns true - if list1 contains key2 value of stream element
list1.contains(x.key2)
)
//collect stream to list
.collect(
//default list collector
Collectors.toList()
);
//output with pretty printer
ObjectWriter objectWriter = new ObjectMapper().writerWithDefaultPrettyPrinter();
System.out.println(objectWriter.writeValueAsString(filteredList));
}
}
发布评论
评论(1)
编辑:
输出示例:
EDITED:
output example: