2016-07-18 6 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){} 

Ich erstelle eine neue Karte. Dann lege ich Werte zur Karte. Aber Karte überschreibt einige Werte? Warum? Nicht ansteigendjava map string string nicht steigend

+0

IF Schlüssel gleich sind, dann wird es die vorherigen Werte – Sanjeev

+0

Ein traditioneller Ansatz zur Vertiefung außer Kraft setzen würde Ihr Code besser lesbar für Menschen machen versuchen, Ihnen zu helfen. – khelwood

+0

einige Werte sind gleich – Gpear

Antwort

0

Ein Map speichert nur einen Wert für jede Taste. Wenn Sie mehrere Werte für denselben Schlüssel speichern möchten, können Sie als Wert für die Karte List<String> oder Set<String> verwenden.

  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

ups ... danke. – Gpear

+0

geben Sie mir Beispielcode der Liste Gpear

+0

Vielen Dank. Es klappt. – Gpear