![](/img/trans.png)
[英]How do I sort an array of strings based on different parts of each string?
[英]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
接口,其中包括可調整大小的ArrayList
、 Vector
、 Iteration
、 LinkedList
等等。
由於 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.