Boa tarde,
Preciso criar um List de Hashmap no seguinte modelo:
[
{nome: "Lucas", email: "lucas@domino", valid: true},
{nome: "Lucas2", email: "lucas2@domino", valid: false},
{nome: "Lucas3", email: "lucas3@domino", valid: true},
]
Alguém teria ideia de como fazer?
Obrigada
Acredito que desta forma você consegue resolver.
Segue imagem em anexo.
1 curtida
Esse tipo de pergunta requer pelo menos que VC tenha tentado fazer alguma vez, mas como VC esta aprendendo o exemplo do Fabricio_Bizo Vale por hora, mas Priscilla não esqueça de quando VC tirar dúvida tente ao menos solucionar o problema sozinha, pois mostra que você ao,menos tentou fazer sozinha, assim VC vai aprender mais a resolver os seus problemas de código sozinha que é a real intenção deste fórum, você precisa estimular sua mente a criar algoritmos e buscar soluções, no proprio google tem solução pra isso e se não tiver veja como funciona cada estrutura de dados separadamente, não sei por que o Fabricio deu a resposta, pois esta pergunta é tão fácil que Vc conseguiria fazer sozinha com uma boa pesquisa no google ok . Abraços
jacoboliveira.
EU procurei, pesquisei, porém não consegui nessa estrutura que postei. A minha estrutura ficou diferente. Segue a classe para que você veja. A minha dúvida é em relação a estrutura.
@RequestMapping(value="addUsers", method = RequestMethod.POST)
public String adiciona(HttpServletRequest request, Model model){
String ownerName = request.getParameter("owner");
String ownerEmail = request.getParameter("owner_email");
//System.out.println(String.format("Owner: [%s] - [%s]", ownerName, ownerEmail));
User owner = new User(ownerName, ownerEmail);
model.addAttribute("ownerValid", owner.isValid);
List<User> users = new ArrayList<User>();
ArrayList<HashMap<String, String>> dataEmails = new ArrayList<HashMap<String, String>>();
HashMap<String, String> names = new HashMap<String, String>();
HashMap<String, String> nomes = new HashMap<String, String>();
HashMap<String, String> emails = new HashMap<String, String>();
HashMap<String, String> validEmail = new LinkedHashMap<String, String>();
Pattern pattName = Pattern.compile("user(\\d)");
Pattern pattEmail = Pattern.compile("user(\\d)_email");
String valdEmail;
// Map names and emails
for(String param: request.getParameterMap().keySet()) {
Matcher m = pattName.matcher(param);
if (m.matches() == true) {
names.put(m.group(1), request.getParameter(param));
}
m = pattEmail.matcher(param);
if (m.matches() == true) {
emails.put(m.group(1), request.getParameter(param));
}
}
// Create users objects
/* for (Integer i = 1; i <= names.size(); i++) {
String name = names.get(i.toString());
String email = emails.get(i.toString());
// System.out.println(emailValid.get(i));
//users.add(u);
}*/
for(Integer ne = 1; ne <= names.size(); ne++){
User us = new User(names.get(ne.toString()),emails.get(ne.toString()));
valdEmail = (us.isValid).toString();
validEmail.put(ne.toString(),valdEmail);
}
dataEmails.add(names);
dataEmails.add(emails);
dataEmails.add(validEmail);
model.addAttribute(users);
model.addAttribute("ownerName", ownerName);
model.addAttribute("ownerEmail", ownerEmail);
request.setAttribute("dataEmails", dataEmails);
}
}
Não fale o que você não saiba. Percebe-se que você não tem humildade de ensinar os outros. Obrigada
Tá ok entendi, não fique chateada não , tem muita gente que quer se aproveitar dos outros , não digo VC , mas tem pessoas que ficam “usando” as pessoas para solucionar seus problemas aparentemente faceis de resolver, principalmente universitários que não sabem nem começar um código. Vc e outros tem que entender que ninguém vai da a solução de mão beijada a pessoa tem que fazer alguma coisa pesquisar algo.
Pela sua última postagem ficou um pouco incoerente com sua pergunta principal, VC pegou de algum site esse código? Parece-me que esse código é do spring framework, acho que esse nível de implementação esta um pouco avançada pra vc é isso mesmo que vc esta querendo? por favor seja um pouco clara no que VC quer. Por incrível que pareça eu quero ajudar Vc assim como o Fabricio. Explique-me melhor
Oi Jacob,
Bom dia,
Entendi. Tudo bem. É que já estou com dificuldades em algo simples. O problema é que minha estrutura está ficando assim:
[{nome=Lucas, nome=Igor}, {email=lucas@gmail.com, email=igor@gmail.com}, {valid=true, valid=true}]
E preciso que ela fique assim:
[
{nome: “Lucas”, email: “lucas@gmail”, valid: true},
{nome: “Igor”, email: “igor@gmail”, valid: false},
]
O problema é que minha estrutura está ficando assim:
[{nome=Lucas, nome=Igor}, {email=lucas@gmail.com, email=igor@gmail.com}, {valid=true, valid=true}]
E preciso que ela fique assim:
[
{nome: “Lucas”, email: “lucas@gmail”, valid: true},
{nome: “Igor”, email: “igor@gmail”, valid: false},
]
Fabrício,
Muito obrigada, com sua ajuda consegui resolver meu problema. Meu for ficou assim
for(Integer ne = 1; ne <= names.size(); ne++){
User us = new User(names.get(ne.toString()),emails.get(ne.toString()));
List<Map> dataEmails = new ArrayList();
valdEmail = (us.isValid).toString();
name.put("nome: ", names.get(ne.toString()));
email.put("email: " , emails.get(ne.toString()));
valid.put("valid: ", validEmail.get(ne.toString()));
validEmail.put("valid: ",valdEmail);
dataEmails.add(name);
dataEmails.add(email);
dataEmails.add(validEmail);
System.out.println(dataEmails);
}
Jacob consegui resolver meu problema. Meu for ficou assim
for(Integer ne = 1; ne <= names.size(); ne++){
User us = new User(names.get(ne.toString()),emails.get(ne.toString()));
List<Map> dataEmails = new ArrayList();
valdEmail = (us.isValid).toString();
name.put("nome: ", names.get(ne.toString()));
email.put("email: " , emails.get(ne.toString()));
valid.put("valid: ", validEmail.get(ne.toString()));
validEmail.put("valid: ",valdEmail);
dataEmails.add(name);
dataEmails.add(email);
dataEmails.add(validEmail);
System.out.println(dataEmails);
}
Eu ainda acho que seu for deveria ficar que nem o exemplo do Fabricio, assim:
for(Integer ne = 1; ne <= names.size(); ne++){
//criar a instancia do map dentro do for
Map<String,Object> map = new LinkedHashMap<>();
List<Map<String,Object>> dataEmails = new LinkedList<>();
User us = new User(names.get(ne.toString()),emails.get(ne.toString()));
valdEmail = (us.isValid).toString();
map.put("nome: ", names.get(ne.toString()));
map.put("email: " , emails.get(ne.toString()));
map.put("valid: ", validEmail.get(ne.toString()));
//validEmail.put("valid: ",valdEmail); //essa linha pra mim é desnecessária(esta se repetindo) uma vez que você esta incluindo logo acima
dataEmails.add(map);
System.out.println(dataEmails);
}
Dai seu for ficará agrupado assim
[{nome: “Lucas”, email: “lucas@gmail”, valid: true}]
[{nome: “Igor”, email: “igor@gmail”, valid: false}]
do jeito que VC fez ficaria assim:
[{nome:“Lucas”}]
[{email:“lucas@email.com”}]
[{valid:true}]
e mais o outra repetição
[{valid:true}]
é isso mesmo que VC quer?
Não. É do jeito que vc falou mesmo. Agrupado.
Obrigada, vou alterar aqui
outra detalhe é VC tirar a lista pra fora do for:
List<Map<String,Object>> dataEmails = new LinkedList<>();
for(condicao){
Map<String,Object> map = new LinkedHashMap<>();
//seu codigo
}
System.out.println(dataEmails);
Ela eu coloquei fora do for até porque eu vou precisar dela na JSP
1 curtida