Bem, não sei se é o local certo, mas vamos lá. Se não for, me desculpem.
Tenho duas classes: Node e Atributo. Node possui uma coleção de atributos. Atributo contém nome e valor como atributos. Segue abaixo a estrutura:
Classe Node:
public class Node {
private int nivel;
private String nome;
private List<Atributo> atributos;
private boolean grupo;
}
Classe Atributo:
public class Atributo {
private String nome;
private String valor;
}
Preciso acessar um atributo da coleção, utilizando o nome.
A minha dúvida é quanto ao tipo da coleção. As duas abordagens que pensei são as seguintes:
[list]Posso usar uma lista de objetos como está no exemplo e criar um método para interar na lista e procurar o atributo ou[/list]
[list]Fazer com que atributos seja um HashMap<String, String> e simplesmente dar um get na key que necessito.[/list]
Acontece que acabei de sair de uma parte do livro de Projeto de Software do Braude que fala exatamente sobre eficiência, elegância, robustez, flexibilidade, etc.
O que acho do assunto:
[list]Me parece que a primeira abordagem é mais elegante e clara, facilitando a manutenção e a flexibilidade, mas menos eficiente, pois posso ter laços aninhados, já que também trabalho com uma coleção de nodes.[/list]
[list]A segunda é bem menos elegante e clara, mas me parece mais eficiente. A não ser que o algoritmo para dar um get também faça uso de um laço.[/list]
E aí? Qual a opnião de vocês. Não tem pressa, pois já estou com as duas formas implementadas e backupeadas, não estando o projeto parado por conta disso. Seria uma questão de “plugar” uma solução ou outra.
Obrigado.