小编Lea*_*oop的帖子

在Java 8中以不区分大小写的方式对字符串值进行排序

如何在不区分大小写的顺序中对字符串值进行排序?

List<Employee> listofEmployees = Arrays.asList(
    new Employee(1, "aaa", Arrays.asList(123, 345, 678)),
    new Employee(1, "bbb", Arrays.asList(91011, 121314, 1516117)),
    new Employee(2, "ccc", Arrays.asList(181920, 212223, 242526)),
    new Employee(3, "ddd", Arrays.asList(272829, 303132, 333435)),
    new Employee(4, "BBB", Arrays.asList(29, 332, 33))
);
Run Code Online (Sandbox Code Playgroud)

我写的是这样的:

listofEmployees.stream().sorted(Comparator.comparing(Employee::getName).reversed())
        .forEach(s -> System.out.println(s.getName()));
Run Code Online (Sandbox Code Playgroud)

如何在此处传递字符串不区分大小写的选项?

java java-8 java-stream

21
推荐指数
3
解决办法
8554
查看次数

Java 8 - Stream - 按值分组并查找该对象的最小值和最大值

对于我的例子,有汽车对象,并发现基于模型的最小和最大价格值(分组依据).

List<Car> carsDetails = UserDB.getCarsDetails();
Map<String, DoubleSummaryStatistics> collect4 = carsDetails.stream()
                .collect(Collectors.groupingBy(Car::getMake, Collectors.summarizingDouble(Car::getPrice)));
collect4.entrySet().forEach(e->System.out.println(e.getKey()+" "+e.getValue().getMax()+" "+e.getValue().getMin()));

output :
Lexus 94837.79 17569.59
Subaru 96583.25 8498.41
Chevrolet 99892.59 6861.85
Run Code Online (Sandbox Code Playgroud)

但我找不到哪个车对象有最高和最低价格.我怎样才能做到这一点?

java java-8 java-stream

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

Java 8流API-根据条件过滤并收集对象

在java 8中,根据某些过滤条件收集emp对象.

在主要班级

List<Emp> empList = Arrays.asList(
    new Emp("aaa", language1), 
    new Emp("cc", language2),
    new Emp("bb", language3), 
    new Emp("dd", language3)
);

empList.stream()
    .flatMap(s->s.getLanguage().stream())
    .filter(s->s.equals("java"))
    .forEach(System.out::println); //Here just i am printing. 
Run Code Online (Sandbox Code Playgroud)

其实我需要收集 new List<EMP>

如何收集所有拥有语言"java"的emp对象.我能怎么做?

java java-8 slamdata

4
推荐指数
1
解决办法
8077
查看次数

如何使用流将对象列表转换为另一个列表对象?

以下代码段已在未使用lambda表达式的情况下实现。

如何使用lambda表达式实现相同的功能?

public class Java8EmpTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        List<Emp> empInList = Arrays.asList(new Emp(1, 100), new Emp(2, 200), new Emp(3, 300));
        List<Emp> afterSalayHikeInJava7 = new ArrayList<>();
        // old way
        for (Emp emp : empInList) {
            afterSalayHikeInJava7.add(new Emp(emp.getId(), emp.getSalary() * 100));
        }
        afterSalayHikeInJava7.stream()
                .forEach(s -> System.out.println("Id :" + s.getId() + " Salary :" + s.getSalary()));
    }
}

class Emp {
    private int id;
    private int salary;

    public int getId() {
        return id;
    } …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

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

Elasticsearch 将索引从一台服务器复制到另一台服务器?

如何将 ES (v 5.x) 索引从一台服务器复制到另一台服务器。我没有权限在这台机器上安装任何软件。有没有更好的解决方案来复制索引?备份和恢复会起作用吗?请分享您的建议

elasticsearch elasticsearch-plugin

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

Spark sql group by 和 sum 更改列名?

在这个数据框中,我找到了每个组的总工资。在 Oracle 中我会使用这段代码

select job_id,sum(salary) as "Total" from hr.employees group by job_id;
Run Code Online (Sandbox Code Playgroud)

在 Spark SQL 中尝试了相同的操作,我面临两个问题

empData.groupBy($"job_id").sum("salary").alias("Total").show()
Run Code Online (Sandbox Code Playgroud)
  1. 别名总计未显示,而是显示“总和(工资)”列
  2. 我无法使用$(我认为是 Scala SQL 语法)。遇到编译问题

     empData.groupBy($"job_id").sum($"salary").alias("Total").show()
    
    Run Code Online (Sandbox Code Playgroud)

任何想法?

scala apache-spark

4
推荐指数
1
解决办法
5857
查看次数

Spark SQL convert dataset to dataframe

How do I convert a dataset obj to a dataframe? In my example, I am converting a JSON file to dataframe and converting to DataSet. In dataset, I have added some additional attribute(newColumn) and convert it back to a dataframe. Here is my example code:

val empData = sparkSession.read.option("header", "true").option("inferSchema", "true").option("multiline", "true").json(filePath)
Run Code Online (Sandbox Code Playgroud)

.....

 import sparkSession.implicits._
    val res = empData.as[Emp]

    //for (i <- res.take(4)) println(i.name + " ->" + i.newColumn)

    val s = res.toDF();

    s.printSchema()

  }
  case class Emp(name: …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

4
推荐指数
1
解决办法
4480
查看次数

具有过滤条件工作流程的Java 8流

在具有过滤条件的Java 8流中,集合中的每个元素都将传递给过滤器以检查条件.在这里,我将编写两种不同的过滤条件并提供不同的工作流程.

public static void main(String[] args) {

    List<String> asList = Arrays.asList("a", "b", "c", "d", "e", "a", "b", "c");

    //line 1
    asList.stream().map(s -> s).filter(distinctByKey(String::toString)).forEach(System.out::println);

    Predicate<String> strPredicate = (a) -> {
        System.out.println("inside strPredicate method--");
        return a.startsWith("a");
    };

    //line 2
    asList.stream().filter(strPredicate).forEach(System.out::println);
}

public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    System.out.println("inside distinctByKey method...");
    Set<Object> seen = ConcurrentHashMap.newKeySet();
    return t -> seen.add(keyExtractor.apply(t));
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例代码中,语句行1过滤条件仅执行一次,但第2行正在为集合输出中的每个元素执行.

我认为该distinctByKey方法将对集合中的每个元素执行,但事实并非如此.为什么?

另外,Set对象引用变量seen是仅执行一次?流程如何工作?

java lambda java-8 java-stream

3
推荐指数
1
解决办法
256
查看次数

Scala 成对遍历列表元素

下面的代码片段取自 GITHub Repo。在这段代码中,我们对接下来的两个数字求和。我的问题是在 doAction 函数必须在大括号末尾的 toList 中。为什么我们需要这个。如果我删除 toList ,那么它会导致问题。

def doAction(numbers:List[Int],action: (Int,Int) => Int):List[Int] =
{
  for(pair <- numbers.sliding(2)) yield {
    action(pair(0),pair(1))
  }
}.**toList**

var res = doAction(List(1,2,3,4,5,6,7,8),(a,b)=> a+b)
Run Code Online (Sandbox Code Playgroud)

2.如何使用map高阶函数重写相同的代码?

scala

3
推荐指数
1
解决办法
356
查看次数

如何将 Kinesis Firehose 数据传递到 dynamodb 表?

Kinesis Firehose 流接收消息。
有一个选项可以保留到 S3,但我的用例是插入到 dynamodb 表中。
Firehose 有一个选项来启用 Lambda 函数。我应该使用 Lambda 将插入逻辑写入 dynamodb 表吗?这是正确的方法吗?
如果是这样,那么如何使用 Java 编写的 Lambda 将记录插入到 DynamoDB 中。

java amazon-s3 amazon-web-services amazon-dynamodb aws-lambda

3
推荐指数
1
解决办法
3569
查看次数