当前位置: 首页 > 知识库问答 >
问题:

查找记录,该记录应至少为每行的一个参数定义一个值

魏高邈
2023-03-14

我有以下列表->

Name                    Age             Company     Salary    
A                       21              comp_A       100        
A                       21              comp_A              
A                       21              comp_A          
B                       22              comp_B              
B                       22              comp_B       200        
C                       23              comp_C       300        
D                       24              comp_D          
E                       25              comp_E         

该逻辑将获取那些满足此条件的记录,也将获取那些不满足此条件的记录,如D/E的最后两行,雇员没有为工资定义任何值,我也应该获取这些值。

共有1个答案

穆远
2023-03-14

将列表转换为流,移除重复项并收集回新列表。您有两个选项:distinct(按所有字段删除重复)和distinctByKey(根据特定条件或仅某些字段删除重复)

https://howtodoinjava.com/java8/java-stream-distinct-examples/

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class FindR {

public static void main(String[] args)
{
    ArrayList<Employee> l = new ArrayList();
    l.add(new FindR().new Employee("A",21,"comp_A",100.0));
    l.add(new FindR().new Employee("A",21,"comp_A",100.0));
    l.add(new FindR().new Employee("A",21,"comp_A",null));
    l.add(new FindR().new Employee("A",21,"comp_A",null));
    l.add(new FindR().new Employee("B",22,"comp_B",null));
    l.add(new FindR().new Employee("B",22,"comp_B",200.0));
    l.add(new FindR().new Employee("C",23,"comp_C",300.0));
    l.add(new FindR().new Employee("D",24,"comp_D",null));
    l.add(new FindR().new Employee("E",25,"comp_E",null));

    List<Employee> l_salaryNotNull = l.stream().filter(p->p.salary !=null).collect(Collectors.toList());
    System.out.println("_salalary defined_");
    l_salaryNotNull.stream().forEach(System.out::println);

    System.out.println("_unique by name,age,company_");
    List<String> l_uByNAC = l.stream().map(p->p.name+":"+p.age+":"+p.company).distinct().collect(Collectors.toList());

    //or remove first null values and then get keys
    //List<String> l_uByNAC = l.stream().filter(p->p.salary !=null).map(p->p.name+":"+p.age+":"+p.company).distinct().collect(Collectors.toList());

    l_uByNAC.stream().forEach(System.out::println);
    //eg: process first record 
    String aux[] = l_uByNAC.get(0).split(":");
    System.out.println("keys for search in initial list | name="+aux[0]+",age="+aux[1]+",company="+aux[2]);
}


public class Employee 
{
    public String name;
    public Integer age;
    public String company;
    public Double salary;
    public Employee(String n, Integer a,String c, Double s)
    {
        name = n;
        age = a;
        company = c;
        salary = s;
    }

    public String toString()
    {
        return "name:"+name+":age:"+age+":company:"+company+":salary:"+salary;
    }
}
}
//output
//_salalary defined_
//name:A:age:21:company:comp_A:salary:100.0
//name:A:age:21:company:comp_A:salary:100.0
//name:B:age:22:company:comp_B:salary:200.0
//name:C:age:23:company:comp_C:salary:300.0
//_unique by name,age,company_
//A:21:comp_A
//B:22:comp_B
//C:23:comp_C
//D:24:comp_D
//E:25:comp_E
//(first)key for search in initial list | name=A,age=21,company=comp_A
 类似资料:
  • 问题内容: 我有一个具有“约会表”和“服务表”的数据库。每个appt都有一个服务,每个服务都有一个价格。我想要的是一个查询,该查询将始终返回12行(每月一行),并包含几个月的总和(基于其服务ID)。到目前为止,我有: 当前,返回的内容如下: 问题是,如果一个月没有任何订单,我不会在查询中返回该月。我希望该月有一个记录,只是它的“ monthly_total”等于零。 以下是我希望查询返回的内容:

  • 给定:我在Kafka中有两个主题,假设主题A和主题B。Kafka流从主题A中读取一条记录,对其进行处理,并产生与所消耗记录相对应的多条记录(假设recordA和recordB)。现在的问题是我如何使用Kafka流来实现这一点。 在这里,读取的记录是消息;处理之后,它返回一个消息列表。如何将此列表划分为两个生产者流?任何帮助都将不胜感激。

  • 好的,我目前正在一个网站上工作,对于网站的一部分,我试图显示一些来自SQL数据库的数据。我希望数据以如下所示的方式显示: 本质上,这应该显示一条记录,但是,我的问题是,我的样式表的设置方式是,每个项目列表/行只允许显示三个项目div。我不太明白怎么做,所以每个div只能显示3条记录,然后用PHP重置。

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。

  • 我有下表: 我还有以下表: 现在我有以下疑问: 长话短说--我的目标是,给定值,从表中获取最新的值。 它应该是这样工作的:给定值-在表中搜索与相同值的匹配记录(注意此列是唯一的)。然后-在表中查找最新的值(使用值)。使用与表中的列匹配的列在此表中搜索它。 当前,该查询将返回,但不返回(我需要它是3030)。你能帮我修一下吗?

  • 我有下面的JSON代码,有必要在每个记录的末尾添加键/值,如示例所示。我使用JOLT Transform处理器进行JSON转换。 输入: 预期输出: 非常感谢你的帮助。提前感谢。