Tag: 函数式编程

如何使用流将此程序转换为java 8function样式?

问题 我编写了一个程序来查找给定字符串的字符的大写和小写的所有可能性。 一个例子是,输入 – “ab”/“Ab”等 – 任何一个输出 – [“ab”,“Ab”,“aB”,“AB”] 码 算法不正确 – 请在下方查看。 public static ArrayList permuteUCLC(String a) { String s=new String(a.toLowerCase()); ArrayList arr = new ArrayList(); arr.add(a); int l = a.length(); for(int i=0;i<=l;i++) { for(int j=i+1;j<=l;j++) { arr.add(s.substring(0,i)+s.substring(i,j).toUpperCase()+s.substring(j,l)); } } Collections.sort(arr); Collections.reverse(arr); return arr; } 警告 在提出问题后我意识到我的算法是错误的。 我会在适当的时候尝试上传正确的算法。 子序列代码(正确代码)这是用于查找所有子序列并对其进行上限的代码。 假设所有字符都是唯一的。 如何查找索引并以function方式实现? public static void […]

您是否可以使用仿函数/函数式编程在Java 7中对列表进行分组(并计算每组的元素)?

你可以分组List types = new ArrayList(Arrays.asList(TypeEnum.A, TypeEnum.B, TypeEnum.A)); 到Map countPerType; 在 Java 8 之前使用仿函数(例如Google的Guava , Apache的Commons Functor )? 我试图了解函数式编程,但我不确定这种事情是否真的可行(因为我不只是映射集合值,而是试图聚合)? 在命令式的风格,我会做这样的事情: public Map countByGroup(List types) { Map countedTypes = new HashMap(); for(TypeEnum type : types) { if(countedTypes.containsKey(type)) { countedTypes.put(type, countedTypes.get(type) + 1); } else { countedTypes.put(type, 1); } } return countedTypes; } 编辑:依赖副作用似乎有点不合适 – 或者它是如何做到的……? Procedure count […]

来自模板化对象的Java 8函数构造函数

我正在使用Eclipse Luna Service Release 2(4.4.2),Java 8 u51。 我正在尝试创建一个方法,该方法将基于另一个方法参数创建传递对象的实例。 原型简化为 public T test(Object param, T instance) { Constructor constructor = instance.getClass().getConstructors()[0]; // I actually choose a proper constructor // eclipse reports “Unhandled exception type InvocationTargetException” Function createFun = constructor::newInstance; T result = (T) createFun.apply(param); return result; } 与Function声明一致的eclipse报告Unhandled exception type InvocationTargetException编译器错误。 我需要Function以后在流中使用。 我试图添加各种try / catch块,抛出声明,但没有修复此编译器错误。 如何使这段代码工作?

在番石榴中反向供应商

我正在寻找Guava中Supplier的反面。 我希望它可以被称为Consumer – 诺普 – 或者Sink – 存在,但它是原始价值观。 它隐藏在某处,我想念它吗? 我希望看到它与Supplier有用的原因相同。 不可否认,用途不太常见,但Suppliers许多静态方法,例如,将以类似的方式应用,并且在一行中表达诸如“将此供应商的每个值发送给此供应商”这样的事情将是有用的。 与此同时, Predicate和Function是丑陋的变通方法。

java.util.function包中函数接口的参数和返回类型的摘要

我正在寻找一个参数表和java.util.function中所有接口的单个​​抽象方法(SAM)的返回类型。

Javagenerics – 实现像map这样的高阶函数

我决定在Java中编写一些常见的高阶函数(map,filter,reduce等),这些函数通过generics是类型安全的,而且我遇到了在一个特定函数中匹配通配符的问题。 为了完整,函子接口是这样的: /** * The interface containing the method used to map a sequence into another. * @param The type of the elements in the source sequence. * @param The type of the elements in the destination sequence. */ public interface Transformation { /** * The method that will be used in map. * @param […]

什么是最优雅的方式来添加两个可选的数字

我需要对包含选项的两个大小数执行添加操作: Optional ordersTotal; Optional newOrder; 我想实现ordersTotal + = newOrder重要的是要注意,如果两个值都为空,则结果同样应为空(即不为零)。 这是我想出的: ordersTotal = ordersTotal.flatMap( b -> Optional.of(b.add(newOrder.orElse(BigDecimal.ZERO)))); 但我想知道是否有一个更优雅的解决方案。

编写Java函数和使用者

在函数上组合java Function和Consumer的最佳方法是什么? 例如,给定一些Function f和一些Consumer c然后执行f.andThen(c)会感觉很自然,但这不是接口的工作方式。 我看到的两个选项是将Function c Consumer c替换为Function c或将Consumer c更改为BiConsumer<Function, String> c并执行 accept(Function f, Object o) { String thing = f.apply(o); //do something with thing } 其中一个比另一个好吗? 有没有更好的办法?

JVM的function/不可变数据结构?

有没有人知道Java / JVM数据结构库提供熟悉的Java数据结构的function(也就是function意义上的不可变或“持久”)等价物? “function”是指对象本身是不可变的,而对这些对象的修改会返回与父对象在适当位置共享相同内部的新对象(为了提高时间和空间的效率;一个天真的实现可以复制整个事物每写一次)。 就像Java的并发库一样,这似乎不是我能够或应该自己实现的东西,所以拥有一个我可以在JVM中使用的function数据结构库会更好。

Java中的函数式编程

如何在java中模拟函数式编程,特别是将函数映射到项集合? map(func,new String [] {“a”,“b”,“c”}); 什么是最简单和最尴尬的方式呢?