如何用忽略大小写的相等性检查值过滤我的集合。
例子:我有
["Value1", "vALue1", "vALue2", "valUE2"]
我需要
["Value1", "vALue2"]
任何解决方案都是好的。
例如,如果我已经有一个等于忽略大小写的字符串,我可以禁止添加新字符串
或者我可以有collection并对其进行过滤以消除等于忽略大小写的字符串
仅使用Streams 1似乎不可能(轻松),但是您可以通过Set
(O(1)查找)和filter
元素中是否存在小写形式来跟踪已经看到的元素(然后Set.add
返回false
) 。
List<String> values = List.of("Value1", "vALue1", "vALue2", "valUE2");
Set<String> seen = new HashSet<>();
List<String> res = values.stream().filter(s -> seen.add(s.toLowerCase()))
.collect(Collectors.toList());
System.out.println(res); // [Value1, vALue2]
1)例如,distinct
不接受映射功能,并且Collectors.groupingBy
可能不保留顺序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句