2010-03-10 6 views
-1

Le modèle de printemps JDBC me renvoie une liste qui ressemble à ci-dessous:Comment itérer carte dans une liste meilleure façon

[{CODE_C=CSC, DESC_C=CSC}, {CODE_C=PG1, DESC_C=PG1}] 

Je veux la liste ci-dessus pour imprimer en jsp comme ci-dessous:

CSC-CSC 
PG1-PG1 

Pouvez-vous me dire la meilleure façon de faire cela?

+0

itérer Êtes-vous sur un 'list' ou' Map'? –

+0

1> Est-ce une liste d'objets cartographiques? 2> Voulez-vous savoir comment parcourir une collection en utilisant des constructions java ou voulez-vous savoir comment itérer en utilisant des balises jsp? – saugata

Répondre

0
List<String> results = new ArrayList<String>(); 

for (Map<String, String> map : someList) { 
    StringBuilder sb = new StringBuilder(); 
    for (String s : map.values()) { 
     sb.append(s).append('-'); 
    } 
    String result = sb.toString(); 
    results.add(result.substring(0, result.length() - 1); // To cut the trailing '-' 
} 
// Do whatever with the results. 
+0

@ponzao je veux en Java 1.4 –

+0

Je dois admettre que je n'ai jamais programmé en Java 1.4 :) donc certains des conseils suivants peuvent être totalement faux. Java 1.4 n'a pas StringBuilder, vous devriez donc utiliser StringBuffer à la place. Parce que les génériques ont été introduits dans Java 1.5, vous devez supprimer les informations de type des collections, par exemple Liste results = new ArrayList () devient List results = new ArrayList() et je suppose que vous devez lancer les éléments lors de leur ajout dans le collection, donc au lieu de results.add (résultat ...), utilisez results.add ((String) result ...). Mais comme je l'ai mentionné précédemment, je ne sais pas grand chose sur 1.4. – ponzao

1

Cela semble être une liste de cartes.

Supposons que vous avez attribué à un List<Map<?,?>> nommé rows:

for (Map<?,?> row : rows) 
    out.format("%s-%s ",row.get("CODE_C"),row.get("DESC_C")); 
+0

merci à tous pour les solutions. –

2
<c:forEach var="map" items="${list_with_maps_inside}"> 
    ${map['CODE_C']} ${map['DESC_C']} 
</c:forEach> 
+0

Ceci est la seule réponse JSP correcte. Comme l'OP n'a pas accepté cette réponse, il semble que JSTL ne soit pas installé et/ou ne sache pas comment faire. Vous devriez avoir développé plus à ce sujet au lieu de poster seulement un extrait de code, Vijay :) – BalusC

1

Bien que pas vraiment votre question, je pense qu'il est préférable d'utiliser un mappeur pour récupérer les résultats. Si vous le faites, vous obtiendrez une liste d'objets, que vous pouvez facilement itérer en utilisant une boucle for.

Exemple de http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html:

public Collection findAllActors() { 
    return this.jdbcTemplate.query("select first_name, surname from t_actor", new ActorMapper()); 
} 

private static final class ActorMapper implements RowMapper { 

    public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
     Actor actor = new Actor(); 
     actor.setFirstName(rs.getString("first_name")); 
     actor.setSurname(rs.getString("surname")); 
     return actor; 
    } 
} 
Questions connexes