La mejor manera de valor sufijo a una cadena si se cumple la condición y generar una lista separada por comas de los valores separados en una lista

presentación:

¿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(" ,")));
Ravindra Ranwala:

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 isStringmétodo no parece necesario para mí, ya que puede ser inline hecho. Por lo que es justo para mí mantener esto como la respuesta.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190039&siteId=1
Recomendado
Clasificación