如何在scala列表中找到多个最大参数

时间:2019-01-08 00:49:12

标签: scala

晚上好, 如何在scala列表中找到多个最大参数:

val finale = list(2,2,3,4,6,6);    
val indexMax = finale.zipWithIndex.maxBy(_._1)._2

在这里我只能找到一个最大值(6)的参数,但是我想找到最后两个(6)值

2 个答案:

答案 0 :(得分:1)

根据Rajkumar的注释进行了明显修改,此代码段返回了一个List,其中包含列表中最大元素的索引。

def findMaximumIndices(list: List[Int]): List[Int] =
  list.zipWithIndex.groupBy(_._1).maxBy(_._1)._2.map(_._2)

val list = List(2,2,3,4,6,6)
val maximumIndices = findMaximumIndices(list)
// maximumIndices: List[Int] = List(4, 5)

由于使用带下划线匿名功能符号的元组访问器过多,因此非常晦涩。 (_._1).

答案 1 :(得分:0)

简单的foldLeft怎么样?

exports.handler = (event, context, callback) => {
    var AWS = require('aws-sdk');
    var CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

    var params = {
        UserAttributes: [{
            Name: `custom:${event.attribute}`,
            Value: event.value
        }],
        UserPoolId: 'us-east-1_example',
        Username: event.username
    }

    CognitoIdentityServiceProvider.adminUpdateUserAttributes(params, function(err, data) {
        if (err) { console.log(err) }
        context.done(null, data);
    });
};

通过不使用Seq,可以更加高效地完成操作。