小编azr*_*zro的帖子

按列表字段过滤对象列表

学生和课程有两个普通对象,如下所示:

public class Student {
    List<Course> courses;
    ...
}
public class Course {
    String name;
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我们有一个listStudents,我们怎么能由他们的课程名称进行筛选一些学生的?

  • 首先我尝试flatMap回答这个问题,但它返回课程对象而不是学生对象.
  • 然后我使用allMatch(以下代码).但它会返回学生列表,但List始终为空.问题是什么?
List<Student> studentList;
List<Student> AlgorithmsCourserStudentList = studentList.stream().
    filter(a -> a.stream().allMatch(c -> c.getCourseName.equal("Algorithms"))).
    collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8 java-stream

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

使用Java 8流方法获取最大值

我想使用java 8流方法从列表中获取最大值.

结构如下:

  • 我读了一个csv文件,并将每行的数据存储在一个单独的类型对象中Round.
  • 所有这些Round对象都存储在一个ArrayList被调用的中arrRound
  • 所有Round对象都有一个字段:List<Hit> hits
  • a Hit由2个字段组成:int numberOfGamesint prizeAmount
public class Round{
    private List<Hits> hits; 
}
public class Hits{
    private int numberOfGames;
    private int prizeAmount;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是迭代所有元素arrRound,获取他们的命中字段的getPrizeAmount()方法并获得最大值.我开始如下,但似乎无法做到:

public class Main(){
    public void main(String[]args){
        List<Round> arrRound = getRoundFromCSV();
        int maxPrize = arrRound.stream()
                               .forEach(round -> {
                                 round.getHits()
                                      .forEach(hit -> hit.getPrizeAmount());
                                });
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我无法在声明的末尾调用max().

提前谢谢你的帮助!

java methods max java-8 java-stream

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

如何在设置所有位的情况下创建256位的BigInteger

如何创建256位全部设置的BigInteger?我已经尝试过以下方法:

BigInteger.valueOf(0xFFFFFFFFFFFFFFFFL)
Run Code Online (Sandbox Code Playgroud)

但它没有给我预期的结果:

int bitCount = b.bitCount();// 0
int bitLength = b.bitLength();// 0
Run Code Online (Sandbox Code Playgroud)

我基本上需要的是一个包含256位的数字,这些数字都已设置.

TNX!

java biginteger

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

构造函数中的Java枚举

我有一个enum性别的类人员,在Person Constructor中我想初始化性别和年龄.如何在main()方法中实例化一个新Person?

class Person  {

   public enum Gender { M,F }

   int age;
   Gender gender;

   public Person(int age, Gender gender) {
       this.age=age; this.gender=gender;
   }           
}

public static void main(String[] args) {
    Person p = new Person(20, ?);        
}
Run Code Online (Sandbox Code Playgroud)

最好的祝福.

java enums constructor

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

使用Switch,减少圈复杂度java

在使用java时我遇到了一个奇怪的情况,让我们先从代码开始.

public static String constructMessage(final String reason, final String xId,
        final String yId, final IonStruct metadataStruct) throws DataSanityException {
    String message = "";
        switch (reason) {
            case "NOT_ACTIVE":
                if (xId != null) {
                    message = String.format("Y %s X %s not active: status is inactive%n", yId, xId);
                } else {
                    message = String.format("Y %s not active: status is inactive%n", yId);
                }
                break;
            case "PRICE_GONE":
                if (metadataStruct.containsKey("applied")) {
                    final String applied = metadataStruct.get("applied");
                    if (applied.equals("single")) {
                        message = String.format("X %s is not …
Run Code Online (Sandbox Code Playgroud)

java oop java-8

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

Mapstruct 映射 - 字符串到列表&lt;String&gt;

我正在努力将字符串对象从 source(Relation.class) 映射到目标列表(RelationListDTO.class) 。

关系.java

   public class Relation {

    private String name;
    private String email;
    private String completeAddress;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

关系列表DTO.java

public class RelationListDTO {
        private String name;
        private String email;
        private List<Address> address;

        // getters and setters
    }
Run Code Online (Sandbox Code Playgroud)

地址.java

public class Address{
private String street;
private String city;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)

映射器类

@映射器

public interface RelationMapper {

    @Mapping(source = "completeAddress", target = "address.get(0).city")
            RelationListDTO relationToListDto(Relation relation);
} 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。有人可以帮忙吗?

java mapping mapstruct

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

如果 Python 中的条件为 True,则跳过一段代码

我正在编写一个包含许多步骤的工作流,比如 100。在每个步骤之后,我想检查一个条件是否为真,如果为真,则跳过所有步骤并转到“下一个级别”。如果它一直走到第 100 步,那么也转到“下一级”。

我可以考虑使用 1 次迭代的 for 循环

for i in range(1):
    step1()
    if condition:
        break

    step2()
    if condition:
        break
    ...
    step100()

next level()
Run Code Online (Sandbox Code Playgroud)

这看起来不错,但是有没有更好的方法没有循环并next level直接跳转到?如果在这些步骤中再次出现这种结构会很有帮助,而且我不想打破多层循环来获得next level

python

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

根据字符串的模式数组对字符串进行排序

我需要按照这些单词在模式数组中的顺序对一串单词进行排序:

String[] pattern = {"Burger", "Fries", "Chicken", "Pizza", "Sandwich", "Onionrings", "Milkshake", "Coke"};

String s = "Chicken Coke Chicken Chicken Onionrings Coke Burger Milkshake Milkshake Burger Coke Milkshake Burger Onionrings Onionrings Coke Chicken Burger Fries Milkshake"; // input string
Run Code Online (Sandbox Code Playgroud)

预计

"Burger Burger Burger Burger Fries Chicken Chicken Chicken Chicken Onionrings Onionrings Onionrings Milkshake Milkshake Milkshake Milkshake Coke Coke Coke Coke" // output string
Run Code Online (Sandbox Code Playgroud)

java

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

拆分数据框列中的列表以分隔列

我的数据框如下所示

    col1     col2     col3
0  [1, a]  [1, a1]  [1, a2]
1  [2, b]  [2, b1]  [2, b2]
2  [3, c]  [3, c1]  [3, c2]
Run Code Online (Sandbox Code Playgroud)

我需要让它看起来像:

   col1     col2     col3  col4
0  a         a1      a2    1
1  b         b1      b2    2
2  c         c1      c2    3
Run Code Online (Sandbox Code Playgroud)

我的代码

import pandas as pd

d = {'col1':[[1,'a'],[2,'b'],[3,'c']],
     'col2':[[1,'a1'],[2,'b1'],[3,'c1']],
     'col3':[[1,'a2'],[2,'b2'],[3,'c2']]}

df = pd.DataFrame.from_dict(d)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试使用 apply(pd.Series) 并通过 for 循环迭代来重​​新分配值,但没有成功

python dataframe pandas

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

Java多线程:启动2个线程,轮流打印1-100。结果是这样的:但它没有运行

两个线程需要按此顺序打印-

Thread1:0    
Thread2:::0    
Thread1:1    
Thread2:::1    
Thread1:2    
Thread2:::2    
Thread1:3    
Thread2:::3
Thread1:::4    
Thread2:::4    
.    
.    
.   
Thread1:100    
Thread2:::100
...
Run Code Online (Sandbox Code Playgroud)

目前这是我的代码,不知何故它卡住了。. 不知道为什么它没有按预期运行

public class Solution{
    private volatile boolean isOneTurn;

    public Solution(){
        isOneTurn = true;
    }

    public void test(){
        Thread t1 = new Thread(new MyThread1("Thread1"));
        Thread t2 = new Thread(new MyThread2("Thread2"));

        t1.start();
        t2.start();
    }

    class MyThread1 implements Runnable {
        public String name;

        public MyThread1(String name) {
            this.name = name;
        }
        @SneakyThrows
        @Override
        public void run() {
            for (int i = 1; i <= 100; …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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