2016-02-06 127 views
-2

請幫我實現一個.map函數,該函數在Java 7的List類/接口上工作。我無法使用Java 8或外部庫的任何功能。如果可能的話,這需要與Scala的函數類似,並且返回值。 (也許不可能)。Java .map()實現

這是一個與所謂的「重複」不同的問題,因爲它要求完全不同的東西。我試圖找到這個函數的實現或者把它放在一起,但是沒有運氣。我在這裏問過,沒有實施建議或代碼。據說這是一個「微不足道」的功能,然而,它逃避了我。

+1

您需要Java-8 –

+5

確實,您已經評價過!再次問同樣的問題真的不是問題所在:http://stackoverflow.com/questions/35180851/scala-to-java-functional-programming –

回答

0

要在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

+0

@ m482所以如果你已經有了一個實現,那是什麼問題?或者你完全改變了這個問題? Stream.map()是微不足道的,但只有在流和lambda的上下文中才有意義,所以我不確定你在問什麼。 –

+0

問題是如何在Java中編寫List.map()實現?謝謝。 – m482

0

不同的答案不同的問題要容易得多。

問題是我該如何在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.