【问题标题】:Java .map() implementation [duplicate]Java .map() 实现
【发布时间】:2016-05-16 15:32:40
【问题描述】:

请帮我实现一个.map 函数,该函数适用于Java 7 中的List 类/接口。我无法使用Java 8 或外部库的任何功能。如果可能,这需要在实现和返回值方面类似于 Scala 的函数。 (也许不可能)。

这是一个与所谓的“重复”不同的问题,因为它要求的东西完全不同。我试图找到这个函数的实现或将它们组合在一起的指针,但没有运气。我在这里问过,但在实施给出的建议或代码方面没有运气。有人说这是一个“微不足道”的功能,但它却避开了我。

【问题讨论】:

标签: java scala functional-programming


【解决方案1】:

要在 Java 7 中进行 groupBy,您必须这样做。

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() 实现?谢谢。
【解决方案2】:

不同问题的不同答案。

问题是如何在 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-15
    • 2013-08-05
    • 2019-06-12
    • 2014-09-20
    • 1970-01-01
    • 2013-05-12
    • 2010-10-15
    • 2023-03-30
    相关资源
    最近更新 更多