Tag: java 8

java8流和多个

我很好奇,如何在java8流中总结多个变量。 Integer wCPU = 0; Double wnetwork = 0.0; Double wMem = 0.0; this.slaContractList.forEach(sla -> { wCPU += sla.getNumberOfCPUs(); wnetwork += sla.getNetworkBandwith(); wMem += sla.getMemory(); }); 但是,这不会编译,因为lambda表达式中的变量应该是final。

JSTL formatDate和java.time.LocalDate

我无法弄清楚如何在JSP中显示java.time.LocalDate值。 在我的JSP中,我有这个: std.datum的类型为java.time.LocalDate。 渲染jsp时,我得到了这个exception: javax.el.ELException: Cannot convert 2015-02-14 of type class java.time.LocalDate to class java.util.Date 我假设它是转换? 谢谢,约翰。

将流收集回到相同的集合类型中

假设我有一个未知类型的集合。 我想要做的是流式传输,在流上做一些事情,并将其收回到与我的原始集合相同的集合类型。 例如: Collection getBigger(Collection col, int value) { return col.stream().filter(v -> v > value).collect(????); } 这个不完整的代码示例的想法是返回一个List如果col是List类(或它的任何子类), Set如果col是Set类,等等……这里的流的方法名称和实际操作是不重要,我已经指定它们只是为了说明我的问题。 那么,有可能吗?

如何优雅安全地最大化分配给Kubernetes中的Java应用程序的堆空间量?

我有一个Kubernetes部署,它基于anapsix / alpine-java映像部署Java应用程序。 容器中没有其他任何东西可以用于Java应用程序和容器开销。 我想最大化Java进程在docker容器中可以使用的内存量,并最小化将保留但从未使用过的ram数量。 例如我有: 两个Kubernetes节点,每个节点有8个ram,没有交换 运行Java进程的Kubernetes部署,最多消耗1 gig堆以实现最佳运行 如何安全地最大化在两个节点上运行的pod的数量,而由于内存限制,从不让Kubernetes终止我的POD? apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-deployment spec: replicas: 1 template: metadata: labels: app: my-deployment spec: containers: – name: my-deployment image: myreg:5000/my-deployment:0.0.1-SNAPSHOT ports: – containerPort: 8080 name: http resources: requests: memory: 1024Mi limits: memory: 1024Mi Java 8 update 131+有一个标志-XX:+ UseCGroupMemoryLimitForHeap来使用来自Kubernetes部署的Docker限制。 我的Docker实验向我展示了Kubernetes正在发生的事情 如果我在Docker中运行以下代码: docker run -m […]

如何在Stream链中调用setter

如何在不使用forEach()的情况下调用Stream链中的setter? List newFoos = foos.stream() .filter(foo -> Foo::isBlue) .map(foo -> foo.setTitle(“Some value”)) //I am unable to use this because also changing the data type into Object .collect(Collectors.toList());

为什么`List`在有`forEach`时没有`map`默认方法?

我已经研究过在Java 8中编写基于流的代码,并注意到了一种模式,即我经常有一个列表,但需要通过对每个元素应用一个简单的映射将其转换为另一个列表。 写完.stream().map(…).collect(Collections.toList())我还记得我们有List.forEach所以我找了List.map但显然这个默认方法还没有添加。 为什么没有添加List.map() (EDIT:或List.transform()或List.mumble() )(这是历史问题),并且使用默认运行时库中的其他方法执行相同的简单速记我刚才没注意到的事情?

我应该如何在我的用例中使用LambdaMetaFactory?

尽管已经阅读了我所知道的所有文档,但我无法解决使用lambdas执行方法的问题。 为了给出一些背景知识,我的用例是一个插件系统。 我正在使用可以分配给任何方法的注释(@EventHandle)。 我使用reflection并遍历类中的每个方法并检查它是否具有注释,如果是,则将方法添加到处理程序对象(将其添加到列表以处理每个“tick”)。 这是我的处理程序类: package me.b3nw.dev.Events; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import java.lang.invoke.*; import java.lang.reflect.Method; import java.lang.reflect.Type; @Slf4j public class Handler { @Getter private final Method method; @Getter private final EventHandle handle; private final MethodHandles.Lookup lookup; private final MethodHandle methodHandle; private final EventHandler invoker; public Handler(Method method, EventHandle handle) throws Throwable { this.method = method; […]

终端执行的Java流操作顺序

我一直试图从官方Java文档中找到明确的合同,关于Java流的顺序,一旦调用终端操作,就处理元素并调用中间操作。 例如,让我们看看这些使用Java流版本和普通迭代版本的示例(两者都产生相同的结果) 。 例1: List ints = Arrays.asList(1, 2, 3, 4, 5); Function map1 = i -> i; Predicate f1 = i -> i > 2; public int findFirstUsingStreams(List ints){ return ints.stream().map(map1).filter(f1).findFirst().orElse(-1); } public int findFirstUsingLoopV1(List ints){ for (int i : ints){ int mappedI = map1.apply(i); if ( f1.test(mappedI) ) return mappedI; } return -1; […]

Java 8 Stream – 为什么filter方法没有执行?

我正在学习使用java流过滤。 但过滤后的流不会打印任何内容。 我认为过滤方法没有被执行。 我的过滤代码如下: Stream.of(“d2”, “a2”, “b1”, “b3”, “c”) .filter(s -> { s.startsWith(“b”); System.out.println(“filter: ” + s); return true; }); 没有编译错误,也没有例外。 有什么建议吗?

java:不兼容类型:推理变量T具有不兼容的边界等式约束:下限:java.util.List

我试图从流中获取一个列表,但我有一个例外。 这是带有对象列表的Movie对象。 public class Movie { private String example; private List movieTranses; public Movie(String example, List movieTranses){ this.example = example; this.movieTranses = movieTranses; } getter and setter 这是MovieTrans: public class MovieTrans { public String text; public MovieTrans(String text){ this.text = text; } getter and setter 我在列表中添加元素: List movieTransList = Arrays.asList(new MovieTrans(“Appel me”), new MovieTrans(“je t’appel”)); […]