

Java - ArrayList - Stream - Jak přefiltrovat pouze čísla a String?
Dobrý den,
public ArrayList<String> getAllFields() {
return Arrays.stream(getClass().getDeclaredFields())
.filter(field -> !Modifier.isStatic(field.getModifiers()))
.map(this::getFieldValue)
.filter(field -> !field.equals("null"))
.collect(Collectors.toCollection(ArrayList::new));
}
private String getFieldValue(final Field field) {
try {
return Objects.toString(field.get(this));
} catch (final IllegalAccessException e) {
throw new RuntimeException(e);
}
}
Potřebuji, aby filtroval pouze celá čísla a řetězce.
Jak to, prosím Vás, musím upravit?
Děkuji
Ahoj,
v Javě nedělám, co toto?
Na následujícím odkaze můžeš předat filtru složitější podmínku, kterou definuješ dříve:
https://howtodoinjava.com/java8/java-stream-filter-example/
najdi odstavec:
3.2. Find all even numbers – Predicate class
Podobně můžeš definovat podmínky pro tvůj ArrayList a tam testovat.
Zda lze převést string na číslo, zda následné číslo je desetinné.
Ale pozor, asi to nebude nijak rychlé. Tudíž ne moc vhodné na velké seznamy.
Díky. O tomhle jsem nevěděl, ale udělal jsem to jiným způsobem.
Když použiji kód v předešlé otázce
Tak změním
na
Ale, nejsem si jistý, jestli je tohle nejlepší způsob. Co myslíte Vy?
Navíc, nechci se odkazovat pouze na Integer. Nevíte, jak se odkazovat na celá čísla, bez nutnosti vypisovat všechny použitelné datové typy? Pokud je to vůbec možné.
Prosím o radu.
Děkuji
Tak jsem to upravil do téhle podoby.
Teď to dělá přesně, co chci. Ale chtěl jsem ještě jednu úpravu.
Tu bych ale dal do samostatné otázky. - odkaz
Každopádně díky za matches.