¿Cuál es la mejor manera de hacer el siguiente en Java 8.
Tengo una lista de objetos ColumnInfo,
ColumnInfo CLASE tiene debajo de los miembros
String name
Class<?> type
Object value
Quiero a la lista de iterate ColumnInfo objetos y si alguno de ellos es de tipo String.class Quiero sufijo "es una cadena" al nombre de la columna, para otras columnas que desea devolver nombre de la columna como es, el valor de retorno debe ser una coma separó la cadena. La cadena separada por comas debe mantener el orden de los elementos como tal en la lista de objetos de entrada ColumnInfo.
Por lo tanto, si tengo la columna de la siguiente información objetos
{order_code , Integer.class, 10}
{order_city, String.class ,"france"}
{is_valid, Boolean.class, true}
Rendimiento esperado
order_code, order_city IS A STRING, is_valid
A continuación es mi enfoque, ¿Hay una mejor manera de hacer esto?
String commaSepStr = columnInfos.stream()
.map(f -> {
String retValue = isString(f)? f.getName()+ " IS A STRING" : f.getName();
return retValue;
}).collect(Collectors.joining(" ,")));
Puede hacerlo como tal,
String resultStr = columnInfoList.stream()
.map(ci -> ci.getType() == String.class ? ci.getName() + " IS A STRING" : ci.getName())
.collect(Collectors.joining(", "));
No es necesario asignar a una variable y retorno. Más bien se puede devolver directamente. También la aplicación del isString
método no parece necesario para mí, ya que puede ser inline hecho. Por lo que es justo para mí mantener esto como la respuesta.