繁体   English   中英

如何为字符串数组中的每个元素添加一个字符串前缀?

[英]How do I prefix a String to each element in an array of Strings?

我想知道在 Java 中是否有一个 function 可以将定义的字符串前缀到字符串数组的每个字符串的开头。

例如,

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

目前,我编码了这个 function,但我想知道它是否已经存在。

没有。 由于它应该是大约三行 function,因此您最好还是坚持使用您编写的那个。

更新

使用 Java 8,语法很简单,我什至不确定是否值得为:

List<String> eatFoods = foodNames.stream()
    .map(s -> "eat an " + s)
    .collect(Collectors.toList());

java 库中没有这样的东西。 这不是 Lisp,所以 Arrays 不是列表,并且还没有为您提供一堆面向列表的功能。 这部分是由于 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;
}

可以为 arrays 解决问题,但也有List接口,其中包括可调整大小的ArrayListVectorIterationLinkedList等等。

由于 object 面向编程的特殊性,这些不同的实现中的每一个都必须实现“prepend(...)”,这将对任何想要实现任何类型的列表的人造成沉重的负担。 在 Lisp 中,情况并非如此,因为 function 可以独立于 Object 存储。

怎么样...之类的

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")

您可以使用带有.concat()方法参考的 stream

    List<String> eatingFoods = foods.stream()
        .map("eat an "::concat)
        .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM