2016-10-13 9 views
0

私はList[(String, List[List[String]])]のようなデータ構造を持っています。私は、各サブリストにおける第一の要素を比較するList[List[String]]で最大値と最小値を見つける必要がある:List [List [String]]の最大値と最小値を各サブリストの最初の要素と比較する

これは私がそれを行う方法です。

val timestamp_col_ind = 1 

val sorted = processed.map(list => (list._1,list._2.sortWith(_.productElement(timestamp_col_ind).toString.toLong < _.productElement(timestamp_col_ind).toString.toLong))) 

その後、私はlast.apply(timestamp_col_ind).toString.toLonghead.apply(timestamp_col_ind).toString.toLongを使用して最大値と最小値の要素にアクセスそれに対応して。

しかし、問題は、サブリストが第1要素によって順序付けられないということです。私は間違って何をしていますか?

+0

を示すことができていない、つまりこれは、サブリストが空になることはありませんことを前提としてい例? –

+0

これは 'apache-spark'にどのように関連していますか? –

+0

@TzachZohar:申し訳ありませんが、実際にこの質問はちょうどスカラに関連しています。それは私のスパークプログラムの一部ですが、スパークタグを持っているのは間違いありません。どうも。 – Lobsterrrr

答えて

0

アルベルトと同様に、混乱を避けるために完全な例を提供することは常に良いことです。 https://stackoverflow.com/help/mcveを参照してください。ここであなたが望むようにそれが見えるものを解決する:

// initialise structure 
val data = List(("foo", List(List("2", "b", "b"), List("3", "c", "c"), List("1", "a", "a")))) 
// sort by long value of first element of sublists 
val sortedData = data.map { case (str, lst) => (str, lst.sortBy(_.head.toLong)) } 
// get minimum and maximum 
val min = sortedData.map { case (str, lst) => (str, lst.head) } 
val max = sortedData.map { case (str, lst) => (str, lst.last) } 

結果:

min: List[(String, List[String])] = List((foo,List(1, a, a))) 
max: List[(String, List[String])] = List((foo,List(3, c, c))) 

彼らはあなたがhead

関連する問題