2016-02-06 71 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.