Лучший способ суффиксировать значение в строке, если оно соответствует условию, и создать список значений в списке через запятую - PullRequest
0 голосов
/ 24 октября 2018

Каков наилучший способ сделать следующее в Java 8.

У меня есть список объектов ColumnInfo,

В ColumnInfo CLASS есть следующие члены

String name
Class<?> type
Object value

Я хочу перебрать список объектов ColumnInfo, и если какой-либо из них имеет тип String.class, я хочу добавить суффикс "IS A STRING" к имени столбца, для других столбцов я хочу вернуть имя столбца как есть, возвращаемое значение должно бытьстрока, разделенная запятыми.Строка, разделенная запятыми, должна поддерживать порядок элементов, как во входящем объекте List of ColumnInfo.

Итак, если у меня есть информационные объекты столбца, как показано ниже

{order_code , Integer.class, 10}
{order_city, String.class ,"france"}
{is_valid, Boolean.class, true}

ожидаемый результат

order_code, order_city IS A STRING, is_valid

Ниже мой подход, есть ли лучший способ сделать это?

String commaSepStr = columnInfos.stream()
            .map(f -> {
                String retValue = isString(f)? f.getName()+ " IS A STRING" : f.getName();
                return retValue;
            }).collect(Collectors.joining(" ,")));

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете сделать это так,

String resultStr = columnInfoList.stream()
    .map(ci -> ci.getType() == String.class ? ci.getName() + " IS A STRING" : ci.getName())
    .collect(Collectors.joining(", "));

Вам не нужно присваивать его переменной и возвращать.Скорее вы можете напрямую вернуть его.Также реализация метода isString не кажется мне необходимой, так как это может быть сделано inline.Поэтому для меня было бы справедливо оставить это в качестве ответа.

...