Как мне добавить префикс String к каждому элементу в массиве строк? - PullRequest
2 голосов
/ 10 июня 2011

Я хотел бы знать, есть ли в Java функция, которая может добавлять префикс определенной строки к началу каждой строки массива строк.

Например,

my_function({"apple", "orange", "ant"}, "eat an ")  would return {"eat an apple", "eat an orange", "eat an ant"}

В настоящее время я закодировал эту функцию, но мне интересно, существует ли она уже.

Ответы [ 3 ]

5 голосов
/ 10 июня 2011

Неа. Поскольку это должна быть функция из трех строк, вам, вероятно, лучше придерживаться той, которую вы кодировали.

Обновление

С Java 8 синтаксис достаточно прост, я даже не уверен, стоит ли создавать функцию для:

List<String> eatFoods = foodNames.stream()
    .map(s -> "eat an " + s)
    .collect(Collectors.toList());
1 голос
/ 10 июня 2011

Ничего подобного не существует в библиотеках Java.Это не Лисп, поэтому массивы не являются списками, и куча функций, ориентированных на списки, вам еще не предоставлена.Отчасти это связано с системой типизации Java, которая делает непрактичным предоставление стольких схожих функций для всех различных типов, которые можно использовать в списочно-ориентированном виде.

public String[] prepend(String[] input, String prepend) {
   String[] output = new String[input.length];
   for (int index = 0; index < input.length; index++) {
      output[index] = "" + prepend + input[index];
   }
   return output;
}

Подойдет длямассивы, но есть также List интерфейсы, которые включают изменяемый размер ArrayList s, Vector s, Iteration s, LinkedList s, и так далее, и так далее.

Из-зачто касается особенностей объектно-ориентированного программирования, то каждая из этих различных реализаций должна была бы реализовать «prepend (...)», которая бы сильно повлияла на любого, кто заботится о реализации списка любого вида.В Лиспе это не так, потому что функция может храниться независимо от объекта.

0 голосов
/ 10 июня 2011

Как насчет чего-то вроде ...

public static String[] appendTo(String toAppend, String... appendees) {
    for(int i=0;i<appendees.length;i++)
        appendees[i] = toAppend + appendees[i];
    return appendees;
}

String[] eating = appendTo("eat an ", "apple", "orange", "ant")
...