Java 8 - 使用 startsWith 从列表中过滤字符串 X 并将 String-X 保存到列表中
2022-09-04 01:41:59
我是Java 8的新手,并试图弄清楚流和过滤器如何与列表一起工作。我有一个预定义的字符串列表,我有一个正在处理的字符串值。我想将已处理的字符串添加到新列表中,如果该字符串以预定义列表中的任何字符串开头。如果字符串与列表中的任何字符串都不匹配,请将其保存到另一个列表中。
例如:
List<String> internalIpAddresses= new ArrayList<>();
List<String> externalIpAddresses = new ArrayList<>();
List<String> ipAddresseses = new ArrayList<String>();
ipAddresses.add("10.");
ipAddresses.add("132.174.");
ipAddresses.add("192.168.");
// filter internal ip addresses
for(String ipAddress : ipAddresseses){
if("10.11.12.13".startsWith(ipAddress)) {
internalIpAddresses.add("10.11.12.13");
}
}
// filter external ip addresses
for(String ipAddress : ipAddresseses){
if(!"5.6.7.8".startsWith(ipAddress)) {
externalIpAddresses .add("5.6.7.8");
}
}
结果:
internalIpAddresses: 10.11.12.13
externalIpAddresses : 5.6.7.8
有没有办法在java 8中使用流以更简单的方式实现这一点?
喜欢:
ipAddresseses.stream()
.filter(ipAddress -> clientIpAddress.startsWith(ipAddress)
.*if the clientIpAddress starts with any of the values in the list then add to internalIpAddresses List
.*if clientIpAddress doesn't start with any values in list then add to externalIpAddresses List
最后,我想保存(“10.11.12.13”或“5.6.7.8”),而不是(“10.”或“192.168.”)列表中的值。clientIpAddress
ipAddresses