EVGD: Códigos Toscos

Ao que parece, o sujeito criou esse monstro recursivo por não conhecer o iterator.

[code]private void removeRecursos(List list, List from) {
if (from == null) {
return;
}
// ser for o mesmo objeto, clona para evitar
// ConcurrentModificationException
if (from.equals(list)) {
from = new ArrayList(list);
}
for (String papel : from) {
removeRecursos(papel, list);
}
}

/**
 * Remove da lista, recursivamente
 */
private void removeRecursos(final String rec, List<String> list) {
	for (final String p : getRecursos(rec)) {
		list.remove(p);
		removeRecursos(p, list);
	}
}[/code]

Fora que não sabe a diferença de == e equals().

Pra que essa lista extra, ao invés de retornar o getResultList()?

private ArrayList<Documento> listaAssociados(Documento doc) {
		ArrayList<Documento> lista = new ArrayList<Documento>();
                // criação da query
		List<Documento> list = q.getResultList();
		if (list != null && !list.isEmpty()) {
			lista.addAll(list);
		}
		return lista;
	}

[quote=Schuenemann]Pra que essa lista extra, ao invés de retornar o getResultList()?

private ArrayList<Documento> listaAssociados(Documento doc) { ArrayList<Documento> lista = new ArrayList<Documento>(); // criação da query List<ProcessoDocumento> list = q.getResultList(); if (list != null && !list.isEmpty()) { lista.addAll(list); } return lista; } [/quote]

Talvez ele quisesse fazer uma cópia. Mas nesse caso, também dava para fazer:

return new ArrayList<Document>(q.getResultList());

Outra coisa é retornar um ArrayList no lugar da interface List.
Esse é realmente um código feio em vários níveis.

Existe algum motivo para querer fazer uma cópia?

Sei lá, não estou com os fontes. Mas aparentemente, nesse caso, não.

De qualquer forma, mesmo que ele queira fazer a cópia, fez de um jeito muito desajeitado.

Sim. Muitas vezes, uma API retorna uma lista que não é modificável (muitas vezes sem saber disso) e você quer manipular essa lista. Então, você faz uma cópia.

Por exemplo, esse código:

Object object = new Object();
		
List<Object> minhaLista = Arrays.asList(object, object);
minhaLista.add(new Object());

Lança uma UnsupportedOperationException. Mas esse não:

Object object = new Object();
		
List<Object> minhaLista = Arrays.asList(object, object);
minhaLista = new ArrayList<Object>(minhaLista);
minhaLista.add(new Object());

[]'s


        public static int CodUFIBGE(string UF)
        {
            if (UF == "RO") return 11;
            else
                if (UF == "AC") return 12;
                else
                    if (UF == "AM") return 13;
                    else
                        if (UF == "RR") return 14;
                        else
                            if (UF == "PA") return 15;
                            else
                                if (UF == "AP") return 16;
                                else
                                    if (UF == "TO") return 17;
                                    else
                                        if (UF == "MA") return 21;
                                        else
                                            if (UF == "PI") return 22;
                                            else
                                                if (UF == "CE") return 23;
                                                else
                                                    if (UF == "RN") return 24;
                                                    else
                                                        if (UF == "PB") return 25;
                                                        else
                                                            if (UF == "PE") return 26;
                                                            else
                                                                if (UF == "AL") return 27;
                                                                else
                                                                    if (UF == "SE") return 28;
                                                                    else
                                                                        if (UF == "BA") return 29;
                                                                        else
                                                                            if (UF == "MG") return 31;
                                                                            else
                                                                                if (UF == "ES") return 32;
                                                                                else
                                                                                    if (UF == "RJ") return 33;
                                                                                    else
                                                                                        if (UF == "SP") return 35;
                                                                                        else
                                                                                            if (UF == "PR") return 41;
                                                                                            else
                                                                                                if (UF == "SC") return 42;
                                                                                                else
                                                                                                    if (UF == "RS") return 43;
                                                                                                    else
                                                                                                        if (UF == "MS") return 50;
                                                                                                        else
                                                                                                            if (UF == "MT") return 51;
                                                                                                            else
                                                                                                                if (UF == "GO") return 52;
                                                                                                                else
                                                                                                                    if (UF == "DF") return 53;
                                                                                                                    else
                                                                                                                    {
                                                                                                                        return 0;
                                                                                                                    }
        }

Hahahaha, essa thread realmente não tem preço!

[code] /**
* @param stringToCovert the stringToCovert to set
* @return the stringConverted - Metodo para converter String para Float
*/
public float convertStringFloat(String stringToCovert) {

    float stringConverted = java.lang.Float.parseFloat(stringToCovert);

    return stringConverted;
}[/code]

E tem um para cada tipo Wrapper.

[]'s

???
(TipoDependencia é um enum)

public List<TipoDependencia> getTiposDependenciaPrimaria(){ List<TipoDependencia> asList = Arrays.asList(TipoDependencia.values()); List<TipoDependencia> list = new LinkedList<TipoDependencia>(asList); list.remove(TipoDependencia.B); list.remove(TipoDependencia.G); list.remove(TipoDependencia.PD); list.remove(TipoDependencia.FA); return list; }

[quote=Schuenemann]???
(TipoDependencia é um enum)

public List<TipoDependencia> getTiposDependenciaPrimaria(){ List<TipoDependencia> asList = Arrays.asList(TipoDependencia.values()); List<TipoDependencia> list = new LinkedList<TipoDependencia>(asList); list.remove(TipoDependencia.B); list.remove(TipoDependencia.G); list.remove(TipoDependencia.PD); list.remove(TipoDependencia.FA); return list; }[/quote]

Perdoe a minha ignorância: qual o problema com esse código?

Talvez a ignorância seja minha, mas achei meio tosco (e ineficiente) adicionar tudo numa nova lista, só porque a primeira não permite remoção.

Acho que teria sido melhor adicionar elemento por elemento ou usar um for, com condições para ver se adiciona ou não. E isso estaria no próprio enum.

[quote=Schuenemann]Talvez a ignorância seja minha, mas achei meio tosco (e ineficiente) adicionar tudo numa nova lista, só porque a primeira não permite remoção.

Acho que teria sido melhor adicionar elemento por elemento ou usar um for, com condições para ver se adiciona ou não. E isso estaria no próprio enum.[/quote]

E tem o lance de caso surja um novo elemento no enum que não seja primário isso aí vai dar problema. O ideal nesses casos é não trabalhar com a negação pra ser o mais específico possível.