Opa!
Cara, eu estava com essa mesma treta. O que eu fiz, pra reduzir a complexidade do código (e acredito eu que reduziu), foi fazer uma classe com a chave (no seu caso a String) e uma referência para um objeto (o MeuObjeto). Eu não sei os erros e se é ou não aconselhado a fazer assim (alguém me corrija, por favor), mas na hora pareceu o mais fácil.
Não li o artigo do GUJ de autoboxing ( :oops: ), mas parece-me que iterar em listas é mais rápido que maps ou sets. Na verdade, eu nunca parei para comparar, mas pensando bem, acho que são muito próximos. Afinal, usando um HashMap() você iria iterar sobre os values (ou seja, um “único objeto”, como na lista).
Um array de objetos que usam generics? Isso, pra mim, soou meio estranho (mas não ligue porque é tarde da noite).
Eu nunca fiz, mas acredito que seja possível sim. Você iria tratar dos generics e coisas do tipo separado da “lista maior”, ou seja, da lista que possui a lista com generics (nossa :oops: :oops: ).
Desculpe se não consegui ajudar mais.
Abraço.