java - 如何反射(reflect)过滤列表中的更改

标签 java list filter

我有一个字符串列表,我想将该列表的过滤版本存储在另一个列表中,这样当原始列表更新时,过滤列表也会更新。

例如:

List<String> strings = new ArrayList<>();
List<String> filteredStrings = strings.stream().filter(string -> string.startsWith("#")).collect(Collectors.toList());
每当将元素添加到 strings 时,

filteredStrings 都不会更新。有没有一种方法可以在将元素添加到 strings 时更新 filteredStrings ?或者我可以采用任何类似的替代方案来实现我想要的结果吗?

最佳答案

filteredStrings是一个全新的对象,因此不会对两者进行更改。

如果您想反射(reflect)更改,那么您很可能必须编写自己的类。

从扩展ArrayList<String>开始,并覆盖add方法仅接受以 # 开头的字符串

<小时/>

如果您不想要列表中的那些字符串,另一个选项是不覆盖 add方法,但添加 ArrayList<String> startsWithFilter(String filter)方法将始终返回包含自定义列表的反射(reflect)更改的列表。

关于java - 如何反射(reflect)过滤列表中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824949/

相关文章:

java - 如何以编程方式检查某个 URL 是否需要使用 Spring Security 进行身份验证?

java - 为什么要在发送 Intent 后调用 finish() 方法?

java - 比较JAVA中的字符串数组

python - 在列表的每个元素之前插入一个元素

Java 列表 : get next or previous element from an identifier

python - 将 FASTA 文件字符串转换为列表时的内存限制

jsf - 如何在数据表过滤器中显示水印?

python - 使用 skimage 导入过滤器时出现问题

java - 通过值在多对多集合中的存在来过滤 Hibernate 实体

java - MyClass.class 和 Class.forName ("className"之间的区别)