标签: java-8

java 8中两个列表对象的交集

java 8中的两个列表对象的交集.有人能告诉我我做错了什么吗?

List<Student> originalStudent = new ArrayList<>();
List<Student> newStudent = new ArrayList<>();

List<Student> intersectListStudent = new LinkedList<>()

originalStudent.add(new Student("William", "Tyndale",1));
originalStudent.add(new Student("Jonathan", "Edwards",2));
originalStudent.add(new Student("Martin", "Luther"),3);

newStudent.add(new Student("Jonathan", "Edwards",2));
newStudent.add(new Student("James", "Tyndale",4));
newStudent.add(new Student("Roger", "Moore",5));


originalStudent.forEach(n ->
        newStudent.stream()
                .filter(db -> !n.getName().equals(db.getName()) &&
                        !n.getLastName().equals(db.getLastName()))
                    .forEach(student-> intersectListStudent .add(student)));
Run Code Online (Sandbox Code Playgroud)

java arraylist intersect java-8 java-stream

2
推荐指数
1
解决办法
1849
查看次数

如何使用java流将平面对象转换为有意对象

我有平面对象POJO:

class FamilyInformation {
  String house;
  String familyMember;
}
Run Code Online (Sandbox Code Playgroud)

使用这样的数据:

[{
 house: "houseName1",
familyMember: "Son"
},
{
 house: "houseName1",
familyMember: "Mom"
},
{
 house: "houseName1",
familyMember: "Dad"
}]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为分层对象POJO:

class House {
  String houseName;
  List<FamilyMember> familyMembers;
}
class FamilyMember {
  String familyMember;
}
Run Code Online (Sandbox Code Playgroud)

我发现的每一条信息都是将其转换为地图.但是我想要List<House>包含List<FamilyMember>任何想法我该怎么办?

java java-8 java-stream

2
推荐指数
1
解决办法
87
查看次数

使用Stream.reduce反演和不正确

使用Stream.reduce反演求和不正确,这里出了什么问题?

double[] array = {1.0, 2.0};
double iunversionSum = Arrays.stream(array).reduce(0.0, (a, b) -> Double.sum(1.0 / a, 1.0 / b));
Run Code Online (Sandbox Code Playgroud)

输出为.5,但预计为1.5(1/1 + 1/2)

java reduce java-8 java-stream

2
推荐指数
1
解决办法
90
查看次数

Java 8排序对象列表

我想尝试像这样排序我的对象列表:

List<UsersDataFoundTo> mergedUsers = mergeUsersFound(ldapUsers, foundUsers);
return mergedUsers.sort((UsersDataFoundTo h1, UsersDataFoundTo h2) -> h1.getLastName().compareTo(h2.getLastName()));
Run Code Online (Sandbox Code Playgroud)

在return语句中我收到一个错误:

Incompatible types.
Required: java.util.List<UsersDataFoundTo>
Found:void
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?

java sorting incompatibletypeerror java-8

2
推荐指数
1
解决办法
87
查看次数

如何在Java中根据多个参数过滤列表中的数据?

我有一个GroupOffices列表

List<GroupOffice> officesOfTheGroup;
Run Code Online (Sandbox Code Playgroud)

我想搜索id是否等于groupOffice.getId(长值),但标签为groupOffice.getLabel(字符串),并将其分配给布尔值。下面的代码运行良好,但是有没有比使用for循环遍历所有项目更好的方法了?

 public GroupOfficeDto saveGroupOffice(GroupOfficeDto groupOfficeDto) {     
            List<GroupOffice> officesOfTheGroup = //some list from db..
            for (GroupOffice go : officesOfTheGroup) {
                if ((!go.getId().equals(groupOfficeDto.getId())) && go.getLabel().equals(groupOfficeDto.getLabel())) {
                    return groupOfficeDto;
                }
        return null:
}
Run Code Online (Sandbox Code Playgroud)

或者如何使用流?如果是这样,使用流是更好的方法吗?

注意:我正在使用Java8

java list stream java-8 java-stream

2
推荐指数
1
解决办法
271
查看次数

在java 8中,DateTimeFormatter无法在秒后解析带有小数0的日期

我正在使用java 8.我试图用DateTimeFormatter解析日期到字符串.但它给出了以下错误.我的尝试和错误如下.谁能帮帮我吗?

我的代码>>

String getFormatedDateForList(String dateObj) {
    // dateObj = "2019-02-06 00:00:00.0"
    DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    String output = LocalDate.parse(dateObj, inputFormat).format(outputFormat)
    return output
}
Run Code Online (Sandbox Code Playgroud)

错误>>

Text '2019-02-06 00:00:00.0' could not be parsed, unparsed text found at index 19. Stacktrace follows: Message: Text '2019-02-06 00:00:00.0' could not be parsed, unparsed text found at index 19

java datetime-format java-8

2
推荐指数
1
解决办法
152
查看次数

字符串串联是否有效?

我知道使用"+"连接运算符来构建字符串是非常低效的,这就是为什么建议使用StringBuilder类,但我想知道这种模式是否也是低效的?

String some = a + "\t" + b + "\t" + c + "\t" + d + "\t" + e;
Run Code Online (Sandbox Code Playgroud)

我猜这里的编译器会优化编程,不是吗?

java string string-concatenation java-8

2
推荐指数
2
解决办法
164
查看次数

流分类问题

我有一个项目列表(MyDetail对象),我想用流排序方法排序.该对象有3个字段:field1,field2,field3.我想先按field3然后按field2然后按field1排序,所有都按相反顺序排序.所以我写了一个方法sortMyList.

我有一个未排序的项目列表unSortedDetails如下:myDetail1:"20180201",false,false myDetail2:"20180101",false,false myDetail3:"20180101",false,true

在sortMyList(unSortedDetails)之后,我希望我的结果是myDetail3,myDetail1,myDetail2,但实际结果是myDetail1,myDetail3,myDetail2,为什么?

所以,如果我像下面这样实现Comparable for MyDetail,那么它按预期工作.这太奇怪了.我无法弄清楚为什么.谢谢你的帮助!

public List<MyDetail> sortMyList(List<MyDetail> unSortedDetails){
    List<MyDetail> myDetails = unSortedDetails
                        .stream().sorted(Comparator.comparing(MyDetail::getField11).reversed()
                                .thenComparing(MyDetail::getField2).reversed()
                                .thenComparing(MyDetail::getField3).reversed())
                        .collect(Collectors.toList());
                        return myDetails;
                        }

                        @Setter
                        @Getter
                        public class MyDetail{
                            String field1;
                            Boolean field2; 
                            Boolean field3; 
                        }



                @Setter
                @Getter
                public class MyDetail implement Comparable<MyDetail>{
                    String field1;
                    Boolean field2; 
                    Boolean field3; 

                        @Override
                        public int compareTo(MyDetail o) {
                            if (this == o || this.equals(o)) return 0;
                            if (field3) return -1;
                            if (o.field3) return 1;
                            if (!field3 && !o.field3 && field2) return -1;
                            if(!field3 && …
Run Code Online (Sandbox Code Playgroud)

java sorting java-8 java-stream

2
推荐指数
1
解决办法
75
查看次数

如何使用spring-boot @Async来使用Java 8

我试图异步调用一个方法.但不知怎的,它不起作用.有人可以帮我解决这个问题吗?

我的主要切入点:

@SpringBootApplication
@EnableAsync
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        AsyncService asyncService = new AsyncService();
        asyncService.asyncMethod();
        asyncService.asyncMethod();
    }

}
Run Code Online (Sandbox Code Playgroud)

异步服务:

@Component
public class AsyncService {

    @Async
    public void asyncMethod(){

        log.info("starting...");
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("ending...");
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,在日志中我期待:

  1. 开始...
  2. 开始...
  3. 结尾...
  4. 结尾...

但这就是我得到的:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading java-8 spring-boot

2
推荐指数
1
解决办法
382
查看次数

尝试打印JAVA8收集器的结果时出现模糊错误

我在尝试打印JAVA8收藏家的结果时遇到Ambiguity错误.

我试图打印Product对象中的ID总和的结果,但得到以下错误:

"方法println(double)对于PrintStream类型是不明确的"

这是一小段代码,我收到编译错误:

编辑:添加代码段以获取更多详细信息:

  1. Product.java域类.

package com.sample.reproduce.bugs;

public class Product {

    private double id;

    private String productName;

    public double getId() {
        return id;
    }

    public void setId(double id) {
        this.id = id;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

}
Run Code Online (Sandbox Code Playgroud)
  1. 我在编译错误的Main.java类:

以下是我遇到编译错误的代码行:

System.out.println(productList.stream().collect(Collectors.summingDouble(x -> x.getId())));
Run Code Online (Sandbox Code Playgroud)

班级快照:

在此输入图像描述

如果我将在一个单独的行中使用Collector(println方法之外),我不会收到任何错误.

如果我们在println()方法中使用它,为什么编译器无法检测到JAVA 8收集器的确切返回类型?

使用命令提示符添加另一种方法的细节:

我尝试使用相同JDK版本的命令提示符,并且程序已成功编译和执行.所以Holger的答案似乎是正确的.这似乎仅适用于Eclipse编译器:

在此输入图像描述

java java-8 java-stream collectors ecj

2
推荐指数
1
解决办法
129
查看次数