Tag: java 8

要映射的Java流

我遇到Map<Integer, List> personenPerLeeftijd ,编译器说方法Persoon :: getLeeftijd无法解析。 我真的不知道我还能做什么,抱歉荷兰语! 我还需要更多信息请问 public class TestPersoon2 { public static void main(String[] args) { final List personen = Personen.getPersonen(); Map map = personen.stream().collect(Collectors.toMap(p -> p.getNaam() + “-” + p.getLeeftijd(), p -> p)); for (String s : map.keySet()) { System.out.printf(“%-15s -> %s\n”, s, map.get(s)); } Map<Integer, List> personenPerLeeftijd = personen.stream().collect(Collectors.groupingBy(Persoon::getLeeftijd)); //THIS METHOD […]

用于引导lambda表达式的实用程序类或方法链接的方法引用?

通过Java 8中引入的function接口,您可以轻松地将不同的表达式链接到一个新表达式中,如下面的代码片段所示。 public class PredicateChaining { public static void main(String[] args) { // verbose, but standard JDK functionality only Predicate allUpperCase = StringUtils::isAllUpperCase; Predicate longerThan5 = s -> s.length() > 5; if (allUpperCase.and(longerThan5).test(“PREDICATE”)) { System.out.println(“‘PREDICATE’ is a uppercase text, longer than 5.”); } // compact, but with utility method (‘chain’ in this case) if (chain(StringUtils::isAllLowerCase).and(s […]

java.time YearMonth作为实体内的类型

你如何在一个实体中使用YearMonth? 我看过很多关于转换器的堆栈溢出答案? 这还需要,如果是这样的话怎么样? @Basic(optional = false) @NotNull @Column(name = “cc_exp_date”) private YearMonth ccExpDate; 我得到的例外情况如下。 我可以将其转换为set方法中的日期,并在实体的get方法中转换回YearMonth作为解决方法吗? MysqlDataTruncation: Data truncation: Incorrect date value: ‘\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B”H\xB2\x0C\x00\x00xpw\x06\x0C\x00\x00\x07\xE2\x02x’ for column ‘cc_exp_date’ at row 1

java中的方法参考

我正在探索java中的方法引用,并且好奇是否可以将以下内容转换为方法引用 List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); list.forEach(item -> new SomeClass(item).someMethod(item)); 我尝试了以下,但这不起作用 list.forEach(SomeClass::new::someMethod);

Java通用枚举function使用java 8默认方法和实用程序类

下面是我提出的失败尝试,指的是使用Reflection的Java Generic Enum类 。 想找到一个更好的方法来做到这一点。 我用这种方法找到了几个问题: 每次我都需要传递类类型。 示例 – EnumUtility.fromKey(Country.class,1) fromSet在城市和国家都重复 public enum City implements BaseEnumInterface { TOKYO(0), NEWYORK(1); private final int key; public static Set fromValue(Set enums) { return enums.stream().map(City::getKey).collect(Collectors.toSet()); } public int getKey() { return key; } private City(int key) { this.key = key; } } public enum Country implements BaseEnumInterface { USA(0), […]

Java8流操作是否缓存?

我在运行Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz (2 CPUs), ~2.7GHz PC上运行以下示例代码 String format = “%7s run taken %6d micro seconds %5d findAny”; // First run long start = System.nanoTime(); int rand = IntStream.range(0, 100000).parallel().findAny().getAsInt(); long end = System.nanoTime(); System.out.println(String.format(format, “First”, ((end – start) / 1000), rand)); // Subsequent runs for (int i = 0; i […]

Java 8 Stream – 查找最大的嵌套列表

我有一个Collection<List> values 如何使用Streams找到包含最大列表的集合? 我尝试过类似的东西,但它并不常用 values.stream().max(e -> e.stream().max(List::size).get()).get() 但是我得到了编译错误。 有任何想法吗?

高级java 8流使用问题

我试图使用java 8流,以便在Message和Member列表上执行操作。 Message是我的域模型中的实体。 Message具有sender字段和Member类型的receiver字段。 Member是我的域模型中的第二个实体。 Member具有已发送消息的集合和已接收消息的集合。 成员JPA实体 : @Entity public class Member implements UserDetails { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; … @OneToMany(fetch = FetchType.LAZY, mappedBy = “sender”) private Collection sentMessages; @OneToMany(fetch = FetchType.LAZY, mappedBy = “recipient”) private Collection receivedMessages; @Version private Integer version; 消息JPA实体 : @Entity […]

Java Stream:forEach和forEachOrdered之间的区别

前提 :我已经阅读过这个问题和其他问题 ,但我需要一些澄清。 我知道Stream.forEach方法在处理并行流时会产生差异(不仅仅是这个),这就解释了为什么会这样 //1 Stream.of(“one “,”two “,”three “,”four “,”five “,”six “) .parallel() .forEachOrdered(item -> System.out.print(item)); 版画 one two three four five six 但是当涉及到中间操作时,当并行化流时,不再保证顺序。 所以这段代码 //2 Stream.of(“one “,”two “,”three “,”four “,”five “,”six “) .parallel() .peek(item -> System.out.print(item)) .forEachOrdered(item -> System.out.print(“”)); 会印出类似的东西 four six five one three two 说forEachOrdered方法只影响其自身执行中元素的顺序是否正确? 直观地说,我想//1例子与…完全相同 //3 Stream.of(“one “,”two “,”three “,”four “,”five […]

在Session中使用lambda表达式

我正在编写一个Javafx应用程序,其中使用JavaMail发送电子邮件。 在创建新Session时,我使用语法。 Session session = Session.getInstance(props, //Use labmda expression? new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication(){ return new javax.mail.PasswordAuthentication(userName, password); } } ); 我想知道是否可以使用lambda表达式来简化它 () -> return new java.mail.PasswordAuthentiaction(userName, password) 但每当我使用它时,它会抛出不兼容的类型,并说Authenticator不是一个function界面。