2017-10-24 18 views
-1

私はので、私はこの方法を使用していたデータを取得するためにList<List<String>>に保存されているいくつかのデータを持っている私の出力は、このはどのようにリストのリストの要素を追加し、新しいリストを生成する

ようなものです

private static void finalResult(List<List<String>> resultList) { 
    for (List<String> listOFResults : resultList) { 
     if(listOFResults.get(0).equals("v1")){ 
      System.out.println("Vehicle is :: "+listOFResults);   
     } 
    } 
} 

Vehicle is :: [v1, route1, 1.4, destination1] 
Vehicle is :: [v1, route2, 2.3, destination1] 
Vehicle is :: [v1, route3, 1.2, destination2] 
Vehicle is :: [v1, route4, 3.4, destination2] 

私のクエリはインデックス値2 i.e 1.4,2.3,1.2,3.4を追加することですが、ほかは

`route1 + route4` = 1.4 + 3.4 
にしておく必要があります

と加えた後、私は私が私が私が持っているもの今私の車両1のフィルタリングをしていますここに私の目的地に到達するための3つの可能な方法を持っている
ここ

value is :: [v1,route1,destination1,route4,destination2,4.8]; 
value is :: [v1,route2,destination1,route4,destination2,5.7]; 
value is :: [v1,route3,destination2,route4,destination1,4.6]; 

のような一般的なリストの両方のリストの値を格納したいです私の出力では私のルートdeatilsと時間が旅行にかかる。私は比較する2つの経路を追加してどちらの目的地をカバーする方が速いかを考えたい。だから、可能な方法がこれを達成する方法をroute1の+ Route4、Route2 + Route4とRoute3 + Route4

することができます。

+0

addAll()メソッドを使用できます。さらにStreamsを使用して両方のリストを連結して1つに集めることができます –

+0

説明のためのデモコードを提供できますか? –

+3

これはよく定義されたPOJOの代わりに 'List 'のインスタンスですか?これはきれいになるでしょう...そして、あなたの要求は本当に明確ではありません。何を正確にしようとしていますか? – AxelH

答えて

1

あなたの質問に私の仮定が正しい場合によっては、ここでは可能な解決策である:

public static void main(String[] args) { 
    List<String> a1 = Arrays.asList("v1", "route1", "1.4", "destination1"); 
    List<String> a2 = Arrays.asList("v1", "route2", "2.3", "destination1"); 
    List<String> a3 = Arrays.asList("v2", "route2", "3.0", "destinationx"); 
    List<String> a4 = Arrays.asList("v1", "route3", "1.2", "destination2"); 
    List<String> a5 = Arrays.asList("v1", "route4", "3.4", "destination2"); 
    List<List<String>> all = List.of(a1, a2, a3, a4, a5); 
    List<String> str = all.stream().filter(l -> "v1".equals(l.get(0))) 
      .map(l -> { 
       double v = Double.parseDouble(l.get(2)) + Double.parseDouble(a5.get(2)); 
       return String.format("%s,%s,%s,%s,%s,%1.1f", l.get(0), l.get(1), l.get(3), "route4", a5.get(3), v); 
      }) 
      .collect(Collectors.toList()); 
    str.forEach(System.out::println); 
} 

これは、次を出力:このコードは何

v1,route1,destination1,route4,destination2,4.8 
v1,route2,destination1,route4,destination2,5.7 
v1,route3,destination2,route4,destination2,4.6 
v1,route4,destination2,route4,destination2,6.8 

  1. それは計算を実行し、あなたが
  2. を指定された形式の文字列がリスト

しかし、正直にこれらの文字列を収集し、作成し「V1」の要素

  • をフィルタリング:最高のものをしまいますデータモデルに対応するフィールドを持つ適切なPlain Old Java Objects(POJO)を作成することです。私のやり方のような文字列をシャッフルすることは決して最善の考えではありません。

  • +0

    これは働いています..ありがとう、あなたPOJOを作成するためのいくつかのリンクを提供できますか?またはPOJOとは何ですか? –

    +0

    @VipulSingh:ここにウィキペディアのPOJOに関するリンクがあります:https://en.wikipedia.org/wiki/Plain_old_Java_object –

    +0

    この部分は、私が地図上で2つの異なる地点を旅行するのに最低限必要な時間を見つけなければならないプロジェクトからの小さな部分です。これらのデータはすべてユーザー側から来ており、ここで一致しなければなりません。 –

    関連する問題