Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Scala中使用HashMap按唯一键过滤重复项?_Java_Scala - Fatal编程技术网

Java 如何在Scala中使用HashMap按唯一键过滤重复项?

Java 如何在Scala中使用HashMap按唯一键过滤重复项?,java,scala,Java,Scala,我通过创建一个复合字符串键(SaleType+SaleDate),在Java中实现了一个简单的过滤方法。然后,我只是将每次销售按其唯一的键放入一个HashMap。因此,我有一个HashMap,其中sales由SaleType+SaleDate键过滤 我最近开始学习Scala,并想用它尝试同样的过滤逻辑。如何使用Scala opportunities实现这一点?我想可以使用过滤器方法。但是如何从Sale对象构造一个字符串键,然后将其放入uniqueSalesMap private static L

我通过创建一个复合字符串键(SaleType+SaleDate),在Java中实现了一个简单的过滤方法。然后,我只是将每次销售按其唯一的键放入一个HashMap。因此,我有一个HashMap,其中sales由SaleType+SaleDate键过滤

我最近开始学习Scala,并想用它尝试同样的过滤逻辑。如何使用Scala opportunities实现这一点?我想可以使用
过滤器
方法。但是如何从Sale对象构造一个字符串键,然后将其放入uniqueSalesMap

private static List<Sale> getUniqueSales(List<Sale> sales) {
    Map<String, Sale> uniqueSalesMap = Maps.newHashMap();
    for (Sale sale : sales) {
        String saleKey = sale.getSaleType() + sale.getSaleDate();
        uniqueSalesMap.put(saleKey, sale);
    }
    return new ArrayList<Sale>(uniqueSalesMap.values());
}
私有静态列表getUniqueSales(列表销售){
Map uniqueSalesMap=Maps.newHashMap();
销售(销售:销售){
字符串saleKey=sale.getSaleType()+sale.getSaleDate();
uniqueSalesMap.put(saleKey,销售);
}
返回新的ArrayList(uniqueSalesMap.values());
}

以下是一种相对简洁的方法,可以避免构建任何中间映射:

import collection.breakOut

val m: Map[String, Sale] = 
  (for (s <- sales) yield (s.getSaleType + s.getSaleDate, s))(breakOut)

m.values.toList
import collection.breakOut
val m:Map[字符串,销售]=

(对于(s),这里有一种相对简洁的方法,可以避免构建任何中间映射:

import collection.breakOut

val m: Map[String, Sale] = 
  (for (s <- sales) yield (s.getSaleType + s.getSaleDate, s))(breakOut)

m.values.toList
import collection.breakOut
val m:Map[字符串,销售]=

(因为(s这是你想要的,但不是你想要的方式,所以我不确定这算不算答案

sales.map(s => s.saleType + s.saleDate).distinct

这是你想要的,但不是你想要的方式,所以我不确定这是否算是一个答案

sales.map(s => s.saleType + s.saleDate).distinct

一种方法是使用
groupBy

sales.groupBy(s=>s.salesType +s.saleDate).values.map(_.head)

一种方法是使用
groupBy

sales.groupBy(s=>s.salesType +s.saleDate).values.map(_.head)

@Andreytukin抱歉,这是一个打字错误)可能重复的@Andreytukin抱歉,这是一个打字错误)可能重复的