我想知道在Java中是否有一个函数可以将定义的字符串作为字符串数组的每个字符串的开头的前缀。
例如,
my_function({"apple", "orange", "ant"}, "eat an ") would return {"eat an apple", "eat an orange", "eat an ant"}
目前,我编写了这个函数,但我想知道它是否已经存在。
答案 0 :(得分:4)
不。因为它应该是一个三行函数,你可能更好的只是坚持你编码的那个。
使用Java 8,语法很简单我甚至不确定是否值得创建一个函数:
List<String> eatFoods = foodNames.stream()
.map(s -> "eat an " + s)
.collect(Collectors.toList());
答案 1 :(得分:1)
java库中没有这样的东西。这不是Lisp,因此Arrays不是Lists,并且还没有为您提供一堆面向List的功能。这部分归因于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
,Vector
,Iteration
s,LinkedList
s,and on,on,and on。
由于面向对象编程的细节,这些不同实现中的每一个都必须实现“prepend(...)”,这会给任何关心实现任何类型列表的人带来沉重的代价。在Lisp中,情况并非如此,因为函数可以独立于Object存储。
答案 2 :(得分:0)
怎么样......
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")
答案 3 :(得分:0)
您可以使用带有 .concat()
方法引用的流
List<String> eatingFoods = foods.stream()
.map("eat an "::concat)
.collect(Collectors.toList());