2017-10-25 19 views
-3

こんにちは私は以下のリストを持っています>チャネルタイプに基づいて最小値と最大値を見つける必要があります 例:485_0x07 = "エネルギー"、485_0x08 = "エネルギー」、485_0x06 = 『リストで最小値と最大値を取得する方法オブジェクト

データ入力形式が似ているエネルギーのキー値に基づいてエネルギー』 :任意の提供するクラスがなければ

[{updatedTime=2017-10-24 23:00:55, 
    playload={"485_0x07":{"Energy":"1750.0","Voltage":"244.83","Current":"0.095795"}, 
      "485_0x06":{"Energy":"5761.0","Voltage":"244.31","Current":"10.1815"}, 
      "485_0x08":{"Energy":"2814.0","Voltage":"245.04","Current":"0.469673"}, 
      "485_0x01":{"Energy":"0.0","Voltage":"0.0","Current":"0.0"}}}, 
{updatedTime=2017-10-24 23:01:05, 
    playload={"485_0x07":{"Energy":"1750.0","Voltage":"244.83","Current":"0.095795"}, 
      "485_0x06":{"Energy":"5761.0","Voltage":"244.31","Current":"10.1815"}, 
      "485_0x08":{"Energy":"2814.0","Voltage":"245.04","Current":"0.469673"}, 
      "485_0x01":{"Energy":"0.0","Voltage":"0.0","Current":"0.0"}}}, 
{updatedTime=2017-10-24 23:59:49, 
    playload={"485_0x07":{"Energy":"1754.0","Voltage":"238.99","Current":"0.100577"}, 
      "485_0x06":{"Energy":"5762.0","Voltage":"238.04","Current":"10.1387"}, 
      "485_0x08":{"Energy":"2814.0","Voltage":"238.84","Current":"0.43637"}, 
      "485_0x01":{"Energy":"0.0","Voltage":"0.0","Current":"0.0"}}}] 

おかげ

+0

これまでに試したことはありますか? 'Map'か何かにあなたの値を保存するようなものです。 – Shirkam

+0

@malte hartwig各オブジェクトにはこのような各チャネルタイプの485_0x07,485_0x08,485_0x06のような異なるチャネルがあります。エネルギーの最小値と最大値が必要です –

答えて

0

が、私はクラスがあることを前提としますすべての要素入力にあなたは、このようなストリームを使用して試すことができます:

input.stream() 
    .flatMap(hbaseObject -> hbaseObject.getPayload().getChannels().stream()) 
    .collect(Collectors.groupingBy(channel -> channel.getKey(), 
            Collectors.summarizingDouble(channel -> channel.getEnergy())) 

これはあなたにMap<ChannelKey, DoubleSummaryStatistics>を与えるだろう。統計オブジェクトには、最小、最大、平均が含まれます。

+0

このクラスの値は、Hベーステーブル –

+0

をベースにしています。この値はjsonの形式で保存され、このチャンネルは固定されていません。一つのオブジェクトにさらにチャンネルタイプが含まれている可能性もあります。 –

+0

オブジェクトがいくつあるかは問題ではありません。オブジェクトのストリームをすべてのチャネルのストリームに変換します。 groupByはチャンネルキーに基づいてそれらを別々のリストに分け、それらのリストはそれらの統計オブジェクトに要約されます。 jsonの入力に関しては、[オブジェクトをオブジェクトにマップする]ことができます(http://www.oracle.com/technetwork/articles/java/json-1973242.html)。 –

関連する問題