2016-07-18 8 views
-2
Map<String, String> map = new HashMap<String, String>();    
    ObservableList<Object> row2 = FXCollections.observableArrayList(); 
      try { 
      connected(); 
      String sql = "SELECT `20`.startdate, `20`.enddate, `20`.number FROM `20`"; 
      ResultSet rs = statement.executeQuery(sql); 
      while(rs.next()){ 
       String sd = rs.getString(3); 
       LocalDate std = rs.getDate(1).toLocalDate(); 
       LocalDate end = rs.getDate(2).toLocalDate(); 
        while (!std.equals(end)) { 
        std = std.plusDays(1); 
        String st = std.toString(); 
        map.put(sd,st); 
        } 

      } 
      closed();} 
       catch(Exception e){} 

私は新しいマップを作成します。それから私は地図に値を入れます。しかしマップはいくつかの値を上書きしますか?どうして?増加しないJavaマップ文字列が増加しない

+0

キーが同じである場合、それはインデントに – Sanjeev

+0

より伝統的なアプローチは、あなたを助けるためにしようとする人々のためのあなたのコードが読みやすくなり、以前の値を上書きします。 – khelwood

+0

いくつかの値は同じです – Gpear

答えて

0

Mapは、各キーに1つの値しか格納しません。同じキーに複数の値を格納する場合は、List<String>またはSet<String>をマップの値として使用できます。

  Map<String, List<String>> map = new HashMap<String, List<String>>(); 
     while(rs.next()){ 
      String sd = rs.getString(3); 
      LocalDate std = rs.getDate(1).toLocalDate(); 
      LocalDate end = rs.getDate(2).toLocalDate(); 
      while (!std.equals(end)) { 
       std = std.plusDays(1); 
       String st = std.toString(); 
       List<String> values = map.get(sd); 
       if (values == null) { 
        values = new ArrayList<String>(); 
        map.put(sd,values); 
       } 
       values.add(st); 
      } 

     } 
+0

アップ...ありがとうございます。 – Gpear

+0

リストのサンプルコードを教えてください Gpear

+0

ありがとうございました。できます。 – Gpear

関連する問題