当前位置: 首页 > 面试题库 >

Java集合/地图套用方法是否等效?

丁俊智
2023-03-14
问题内容

我想将一个函数应用于Java集合,在这种特殊情况下为map。有没有很好的方法可以做到这一点?我有一张地图,想对地图中的所有值运行trim(),并让地图反映更新。


问题答案:

对于Java 8的lambda,这是一个衬里:

map.replaceAll((k, v) -> v.trim());

出于历史的考虑,这是一个没有lambda的版本:

public void trimValues(Map<?, String> map) {
  for (Map.Entry<?, String> e : map.entrySet()) {
    String val = e.getValue();
    if (val != null)
      e.setValue(val.trim());
  }
}

或者,更一般而言:

interface Function<T> {
  T operate(T val);
}

public static <T> void replaceValues(Map<?, T> map, Function<T> f)
{
  for (Map.Entry<?, T> e : map.entrySet())
    e.setValue(f.operate(e.getValue()));
}

Util.replaceValues(myMap, new Function<String>() {
  public String operate(String val)
  {
    return (val == null) ? null : val.trim();
  }
});


 类似资料:
  • 问题内容: Scala的集合提供了一个名为方法是合并和成一个单一的方法。在筛选集合以产生仅包含特定类型的该集合的子集时,此功能特别有用。 Java 8的Stream是否有这样的事情? 问题答案: 考虑到Java的类型系统,在一个步骤中组合使用和并没有多大用处。例如,没有这种类型。 最接近的是: 但表现力 不比 当然,您可以创建一个辅助方法,将这些步骤封装在一个不可分解的操作中: 那么你可以像这样使

  • 问题内容: 我将某些本机方法重写为常规Java方法。 本机方法有效地静态吗?或者是否曾经有一个隐式的“ this”参数? 谢谢! 问题答案: 就像常规Java方法一样,本机方法可以是非方法。 非本机方法接收引用,而非本机方法则接收对containg类的引用。 根据JNI规范: 本机方法参数 JNI接口指针是本机方法的第一个参数。JNI接口指针的类型为JNIEnv。第二个参数根据本机方法是静态还是静

  • 问题内容: 我要实现以下功能: 如何检查向量元素类型? 请注意, 向量可能为空,因此我无法检查第一个元素是“ instanceof”整数还是String … 编辑: 好吧,我脑子里有个念头,我不知道它是否会起作用 我可以按以下方式实现checkType函数: 是否可以检查T是否为整数?! 提前致谢 问题答案: *由于 类型擦除, *泛型类型参数 在运行时不可恢复(某些特殊情况除外)。这意味着在运行

  • KEY1---->VAL1 KEY2---->VAL3 KEY3---->VAL3 KEY5---->VAL5 KEY6---->VAL3 KEY7---->VAL6 KEY8---->VAL3 KEY9---->VAL3

  • 我有两种方法来检查列表是否为空 而且 我的拱门告诉我前者比后者好。但我认为后者更好。 谁能澄清一下吗?

  • 问题内容: 我有两种检查列表是否为空的方法 和 我的拱门告诉我,前者比后者更好。但是我认为后者更好。 任何人都可以澄清一下吗? 问题答案: 您应该 绝对 使用。计算任意列表的可能会很昂贵。即使确认是否有任何元素 可以 是昂贵的,当然,但没有优化不能 也 让速度更快,而相反的情况并非如此。 例如,假设你有一个链表结构,它 并没有 缓存的大小(而 做 )。然后将变为O(N)运算,而仍为。 当然,另外,