如何在Java流中使用startsWith方法?

时间:2018-06-22 06:48:03

标签: java java-stream

我正在尝试使用流作为代码。

我有一个实体类,它的字段以'abc'前缀开头。

示例:

private String abcTittlename; 

并具有普通字段

示例:

private String titlePage;

我正尝试使用startsWith方法不启动'abc',我想写成不以abc开头的字段

如何使用此方法,或者还有其他方法可以在流java中执行此操作?请帮帮我!

2 个答案:

答案 0 :(得分:0)

假设您有一堂课:

public class MyClass {
    private String abcTittlename; 
    private String titlePage;

    // other fields
}

您可以使用Class#getDeclaredFields()Arrays#stream()选择所有以abc开头的字段:

Arrays.stream(MyClass.class.getDeclaredFields())
    .filter(field -> !Modifier.isStatic(field.getModifiers())) // only include instance fields
    .filter(field -> !field.getName().startsWith("abc"))
    .forEach(field -> System.out.println(field.getName()))

答案 1 :(得分:0)

据我了解,您的问题是您可以做什么:

    // Create a new list to iterate over it later
    final List<Field> allFields = new ArrayList<>();
    // Add all fields from your desired class
    allFields.addAll(Arrays.asList(YourEntityClass.class.getDeclaredFields()));
    // Iterate over all fields
    final List<Field> filteredFields = allFields.stream()
                                                // Filter by any condition
                                                .filter(field -> !field.getName().startsWith("abc"))
                                                // Collect your filtered fields
                                                .collect(Collectors.toList());