Java: StringBuffer & Concatenation

Это так просто.

let dict = SaveDate.reduce(into: [String: Double]()) { (result, data) in
    result[data.Label, default: 0] += data.Money
}

Или, точнее,

let dict = SaveDate.reduce(into: [String: Double]()) { [111][$1.Label, default: 0] += $1.Money }

dict

// ["test2": 15.0, "test3": 30.0, "test1": 100.0]

blockquote>

Примечание: Вы должны использовать lowerCamelCase для имен переменных в соответствии с рекомендациями Swift API .

8
задан Jean Paul Galea 30 September 2008 в 08:48
поделиться

6 ответов

Я думаю, что это обрабатывается легче любой со вспомогательным методом (непротестированный код):

public String myMethod() {
    StringBuilder sb = new StringBuilder();
    addToBuffer(sb, "Hello").addToBuffer("there,");
    addToBuffer(sb, "it").addToBuffer(sb, "works");
}

private StringBuilder addToBuffer(StringBuilder sb, String what) {
    return sb.append(what).append(' ');  // char is even faster here! ;)
}

Или даже с помощью шаблона Разработчика с быстрым интерфейсом (также непротестированный код):

public String myMethod() {
    SBBuilder builder = new SBBuilder()
        .add("Hello").add("there")
        .add("it", "works", "just", "fine!");

    for (int i = 0; i < 10; i++) {
        builder.add("adding").add(String.valueOf(i));
    }

    System.out.println(builder.build());
}

public static class SBBuilder {
    private StringBuilder sb = new StringBuilder();

    public SBBuilder add(String... parts) {
        for (String p : parts) {
            sb.append(p).append(' '); // char is even faster here! ;)
        }
        return this;
    }

    public String build() {
        return sb.toString();
    }
}

Вот статья о предмете.

Надежда это помогает!:)

10
ответ дан 5 December 2019 в 06:24
поделиться

StringBuffer является окончательным. Вы не можете произойти из него. Лучшее решение действительно состоит в том, чтобы добавить дополнение для себя. Запишите метод для него и используйте Постоянное ДОПОЛНЕНИЕМ так, чтобы можно было легко изменить его, или лучше помещать его в параметр.

4
ответ дан 5 December 2019 в 06:24
поделиться

Необходимо использовать StringBuilder.

Где возможно, рекомендуется, чтобы этот класс использовался в предпочтении к StringBuffer, поскольку это будет быстрее являться объектом большинства реализаций.

6
ответ дан 5 December 2019 в 06:24
поделиться

Просто добавьте пространство сами, это достаточно легко согласно Вашему собственному примеру.

2
ответ дан 5 December 2019 в 06:24
поделиться

Разве Вы не можете создать новый класс, который повторяется StringBuffer и добавьте appendWithTrailingSpace() метод?

CustomStringBuffer str = new CustomStringBuffer();
str.appendWithTrailingSpace("string value");

(Хотя можно хотеть назвать метод чем-то немного короче.)

3
ответ дан 5 December 2019 в 06:24
поделиться

Другая возможность состоит в том, что объекты StringBuilder возвращают себя, когда Вы звоните, добавляют, означая, что можно сделать:

str.append("string value").append(" ");

Не совсем как пленка, но это - вероятно, более легкое решение, чем + "" метод.

Другая возможность состоит в том, чтобы создать класс обертки, как PaddedStringBuilder, который предоставляет те же методы, но применяет дополнение, Вы хотите, так как Вы не можете наследоваться.

1
ответ дан 5 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: