請幫我實現一個.map
函數,該函數在Java 7的List
類/接口上工作。我無法使用Java 8或外部庫的任何功能。如果可能的話,這需要與Scala的函數類似,並且返回值。 (也許不可能)。Java .map()實現
這是一個與所謂的「重複」不同的問題,因爲它要求完全不同的東西。我試圖找到這個函數的實現或者把它放在一起,但是沒有運氣。我在這裏問過,沒有實施建議或代碼。據說這是一個「微不足道」的功能,然而,它逃避了我。
請幫我實現一個.map
函數,該函數在Java 7的List
類/接口上工作。我無法使用Java 8或外部庫的任何功能。如果可能的話,這需要與Scala的函數類似,並且返回值。 (也許不可能)。Java .map()實現
這是一個與所謂的「重複」不同的問題,因爲它要求完全不同的東西。我試圖找到這個函數的實現或者把它放在一起,但是沒有運氣。我在這裏問過,沒有實施建議或代碼。據說這是一個「微不足道」的功能,然而,它逃避了我。
要在Java 7中做一個組,您可以做類似這樣的事情。
Map<K, List<V>> map = new HashMap<>();
for(V v : charges) {
K k = v.getCC();
List<V> values = map.get(k);
if (values == null)
map.put(k, values = new ArrayList<>());
values.add(v);
}
當然,這是Java 8
@ m482所以如果你已經有了一個實現,那是什麼問題?或者你完全改變了這個問題? Stream.map()是微不足道的,但只有在流和lambda的上下文中才有意義,所以我不確定你在問什麼。 –
問題是如何在Java中編寫List.map()實現?謝謝。 – m482
不同的答案不同的問題要容易得多。
問題是我該如何在Java中編寫List.map()實現?
在Java 7你可以使用一個循環,你會放置該循環內,其將出現在映射的代碼(或過濾器,或flatMap)
例如在Java 8中,你可能會寫。
List<String> words = ..
List<String> allLower = words.stream()
.map(s -> s.toLowerCase())
.collect(Collectors.toList());
在Java 7中,您會將toLowerCase
放入循環中。
List<String> words = ..
List<String> allLower = new ArrayList<>(words.size());
for (String word : words)
allLower.add(word.toLowerCase()); // map(x -> ?) goes here.
您需要Java-8 –
確實,您已經評價過!再次問同樣的問題真的不是問題所在:http://stackoverflow.com/questions/35180851/scala-to-java-functional-programming –