import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StringProcessing {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "apple", "cherry", "banana");
List<String> result = words.stream()
.filter(str -> str.length() > 5)
.distinct()
.sorted()
.collect(Collectors.toList());
System.out.println(result);
}
}
distinct与filter结合在此场景中的作用
- filter的作用:
filter(str -> str.length() > 5)
这一步是根据字符串长度进行筛选。它会遍历列表中的每个字符串,仅保留长度大于5的字符串。在这个例子中,只有 "banana"
和 "cherry"
长度大于5,因此其他字符串(如 "apple"
)会被过滤掉。这样可以减少后续处理的数据量,专注于符合长度条件的字符串。
- distinct的作用:
distinct()
方法用于去除流中的重复元素。在经过 filter
筛选后,可能仍然存在重复的字符串(例如,可能有多个长度大于5的相同字符串)。distinct
方法会基于元素的 equals
方法来判断元素是否重复,并去除重复的元素。在这个例子中,如果 filter
后有多个 "banana"
,distinct
会确保最终结果中只有一个 "banana"
。结合 filter
使用,可以保证最终输出的结果既满足长度条件,又没有重复元素。