2017-12-13 13 views
1

私は以下のようなタプル(fileName、creationDate)のデータを含むListを持っています。タプルの2番目の要素をスカラのリストからフィルタリングする方法

latestFiles: List[(java.io.File, String)] = List(
(222651.log,2017-12-13), 
(222301.log,2017-12-11), 
(222305.log,2017-12-13), 
(222303.log,2017-12-12), 
(222302.log,2017-12-13), 

タプルの2番目の要素は、ファイルの作成日(最初の要素)を示します。 以下のコードを使用して、リストの2番目の要素の形式で日付を取得しました。

val simpDate = new java.text.SimpleDateFormat("yyyy-MM-dd") 
val currDate = simpDate.format(new java.util.Date()) 
val now = Instant.now            // Gets current date in the format: 2017-12-13T09:40:29.920Z 
val today = now.toEpochMilli 
val t = (x:Long) => { new SimpleDateFormat("yyyy-MM-dd").format(x)} 
val todaySimpDate = t(today)          // Gets the date in the format: 2017-12-13 

私は、リスト内のすべての要素を通して移動する必要があります:latestFilesと「todaySimpDate」のように日付を持つタプルを取得します。 私はそれを行うために 'フィルタ'とサブリストオプションがあることを知っていますが、私は正しい方法を考え出すことができません。私は変数にシステム日付を取得し、その値を比較するためにそれを使用していますように私は、日付値をハードコーディングしていない

val latefil = latestFiles.filter(y => (y._1,y._2==todaySimpDate)) 
<console>:64: error: type mismatch; 
found : (java.io.File, Boolean) 
required: Boolean 
     val latefil = latestFiles.filter(y => (y._1,y._2==todaySimpDate)) 

:私は、次の方法を試してみました。 私はそれを間違った方法でやっていると知っていますが、リストから要素を取得する方法を教えてもらえますか?タプルの2番目の要素が "todaySimpDate"の値にあるlatestFiles。

答えて

2

あなたのフィルター式ではなく、タプル

例えば、ブール値を返す必要があります:

latestFiles.filter(y => y._2==todaySimpDate) 

か:

latestFiles.filter(_._2 == todaySimpDate) 
関連する問題