Scala过滤条件列表

时间:2018-09-01 19:41:57

标签: scala seq

我有一个Seq of Student对象,他们在不同学科中得分均很高。 例如

  static Future<List<AustinFeedsMeEvent>> _getEventsFromFirestore() async {
CollectionReference ref = Firestore.instance.collection('events');
QuerySnapshot eventsQuery = await ref
    .where("time", isGreaterThan: new DateTime.now().millisecondsSinceEpoch)
    .where("food", isEqualTo: true)
    .getDocuments();

HashMap<String, AustinFeedsMeEvent> eventsHashMap = new HashMap<String, AustinFeedsMeEvent>();

eventsQuery.documents.forEach((document) {
  eventsHashMap.putIfAbsent(document['id'], () => new AustinFeedsMeEvent(
      name: document['name'],
      time: document['time'],
      description: document['description'],
      url: document['event_url'],
      photoUrl: _getEventPhotoUrl(document['group']),
      latLng: _getLatLng(document)));
});

return eventsHashMap.values.toList();
}

我想要列出所有学科得分都超过50的学生。现在,我通过迭代,将值放入map并像在Java中一样进行检查来进行检查。我们如何在Scala中做到这一点?

2 个答案:

答案 0 :(得分:2)

 for i in range(len(flst)-2):
    for j in flst[i+1]:
        if j in range(flst[j], flst[j+2]):
            print(j)

答案 1 :(得分:0)

假设您有一个案例班Students,则类似以下内容的地图将为您提供一个由学生ID键针对所有分数均高于50的学生的地图。

case class Students(id:Int, subject:String, score:Int)
val result = scores.groupBy(_.id).filter(_._2.forall(_.score > 50))