[RESOLVIDO] Unir/Juntar Arraylist contendo Integer e String

Será que alguém pode me ajudar, estou com o seguinte problema. Tenho duas arraylists que preciso transformar em uma terceira para criar uma combo, porém não estou conseguindo, vou postar o meu código:

private List<Prestador> ListaCredorPrestadores = new ArrayList<Prestador>(); private List<Funcionario> ListaCredorFuncionarios = new ArrayList<Funcionario>();

DBConnection con = DBConnection.getInstance();
            PrestadorDAO prestadordao = new PrestadorDAO(con.getCon());
            FuncionarioDAO funcionariodao = new FuncionarioDAO (con.getCon());
            ListaCredorPrestadores = prestadordao.getCredorPrestadores();
            ListaCredorFuncionarios = funcionariodao.getCredorFuncionarios();

Assim carrego as duas, porém para jogar na combo faço assim:

ObjetoCombo objectoCombo;
            ArrayList<ObjetoCombo> lstObjetoCombo = new ArrayList();
            for (Prestador objGrupos : ListaPrestadores) {
                objectoCombo = new ObjetoCombo();
                objectoCombo.setId(objGrupos.getPrestadorId());
                objectoCombo.setDescri(objGrupos.getPrestadorNome());
                lstObjetoCombo.add(objectoCombo);
                //System.out.println(objGrupos.getCodigoUnidade());
            }
            
            modeloCboBoxModel = new ResultSetComboBoxModel(lstObjetoCombo);
            combo.setModel(modeloCboBoxModel);
            combo.setSelectedIndex(-1);

Desta forma as combo funcionam, mas quando precisei juntar os dois arrays, não deu certo.

Agradeço antecipadamente o auxílio

não entendi o que você quis dizer com juntar os dois arrays, pode exemplificar?

[]'s

usa hashmap para unir os dois

Voce pode implementar uma mesma interface para os dois, assim vc pode generalizar uma interface ao inves de uma determinada classe:

public class Prestador implements Credor...
public class Funcionario implements Credor...

List<Credor> credores = new ArrayList<Credor>;

credores.add(new Funcionario());
credores.add(new Prestador());

Bom, Mickdark vou tentar implementar do jeito que você colocou, mas antes, vou explicar melhor a situação.

É o seguinte, tenho duas tabelas no banco, uma de funcionários e outra de prestadores, em determinado momento, preciso dos dois em uma combobox.

Na tabela funcionários tenho: Id_funcionario e Nome_Funcionario, na tabela prestadores, tenho: id_prestador e nome_prestador, onde os campos com id são do tipo int e os campos nome são do tipo string, para diferenciar um do outro, atribuí mais uma string chamada de credor_funcionario e credor_prestador, isso para saber em qual tabela pegar os outros dados como endereço etc…

Resumindo, preciso juntar tudo isso em uma combo para que fique mais ou menos assim:

ID NOME CREDOR
21 JORGE FUNC
56 CARLO PRES
44 NUBIA PRES
01 JOÃO FUNC

Bom é isso, eu gostaria que a combo ficasse com esses três campos, porém ainda não consegui.

Abraço e obrigado antecipadamente.

Bom infocontroller, talvez consiga implementando alguns padroes e utilizando esse padroes para gerar os combos, exemplo:

Interface Credor

interface Credor{
	public Integer getId();
	public String getNome();
	public String getCredor();
}

Classe Funcionario

class Funcionario implements Credor{
	
	private int id_funcionario;
	private String nome_Funcionario;
	private String credor_funcionario;
	
	public Funcionario(int id_funcionario, String nome_Funcionario, String credor_funcionario) {
		this.id_funcionario = id_funcionario;
		this.nome_Funcionario = nome_Funcionario;
		this.credor_funcionario = credor_funcionario;
	}
	
	public int getId_funcionario() {
		return id_funcionario;
	}
	public void setId_funcionario(int id_funcionario) {
		this.id_funcionario = id_funcionario;
	}
	public String getNome_Funcionario() {
		return nome_Funcionario;
	}
	public void setNome_Funcionario(String nome_Funcionario) {
		this.nome_Funcionario = nome_Funcionario;
	}
	public String getCredor_funcionario() {
		return credor_funcionario;
	}
	public void setCredor_funcionario(String credor_funcionario) {
		this.credor_funcionario = credor_funcionario;
	}
	
	@Override
	public Integer getId() {
		return this.id_funcionario;
	}
	@Override
	public String getNome() {
		return this.nome_Funcionario;
	}
	@Override
	public String getCredor() {
		return this.credor_funcionario;
	}

}

Classe Prestador

class Prestador implements Credor{
	
	private int id_prestador;
	private String nome_prestador;
	private String credor_prestador;
	
	public Prestador(int id_prestador, String nome_prestador, String credor_prestador) {
		this.id_prestador = id_prestador;
		this.nome_prestador = nome_prestador;
		this.credor_prestador = credor_prestador;
	}
	
	public int getId_prestador() {
		return id_prestador;
	}
	
	public void setId_prestador(int id_prestador) {
		this.id_prestador = id_prestador;
	}
	
	public String getNome_prestador() {
		return nome_prestador;
	}
	
	public void setNome_prestador(String nome_prestador) {
		this.nome_prestador = nome_prestador;
	}
	
	public String getCredor_prestador() {
		return credor_prestador;
	}
	
	public void setCredor_prestador(String credor_prestador) {
		this.credor_prestador = credor_prestador;
	}
	@Override
	public Integer getId() {
		return this.id_prestador;
	}
	@Override
	public String getNome() {
		return this.nome_prestador;
	}
	@Override
	public String getCredor() {
		return this.credor_prestador;
	}
	
}

Teste (Main)

public class Listas_ArrayList {
	public static void main(String[] args) {
		ArrayList<Credor> credores = new ArrayList<Credor>();
		
		credores.add(new Funcionario(1, "Joao", "FUNC"));
		credores.add(new Funcionario(2, "Jose", "FUNC"));
		credores.add(new Prestador(3, "J SA", "PRES"));
		credores.add(new Prestador(4, "J ME", "PRES"));
		System.out.println();
		System.out.println("ID|  NOME  |  CREDOR");
		
		for (Credor credor : credores) {
			System.out.println(credor.getId()+" |  "+credor.getNome()+"  |   "+credor.getCredor());
		}
		
	}
}

Olha amigo Mickdark, funcionou perfeitamente! Cara nem acredito que isso tá funcionando. O bom foi que aprendi coisas novas, sempre aprendo com essa comunidade.

A única mudança que tive que fazer foi colocar a interface como public para que fosse acessada por outra classe, no mais, foi só sucesso.

public interface Credor{ public Integer getId(); public String getNome(); public String getCredor(); }

Mickdark, olha só, se for abuso pode falar, é só um detalhe. Observei que os funcionários ficam depois dos prestadores, teria alguma forma de ordená-los?

Obrigado mais uma vez.

[quote=infocontroller]Olha amigo Mickdark, funcionou perfeitamente! Cara nem acredito que isso tá funcionando. O bom foi que aprendi coisas novas, sempre aprendo com essa comunidade.

A única mudança que tive que fazer foi colocar a interface como public para que fosse acessada por outra classe, no mais, foi só sucesso.

public interface Credor{ public Integer getId(); public String getNome(); public String getCredor(); }

Mickdark, olha só, se for abuso pode falar, é só um detalhe. Observei que os funcionários ficam depois dos prestadores, teria alguma forma de ordená-los?

Obrigado mais uma vez.[/quote]

Collections.sort(credores);

Como o Renli postou é só colocar um Collections.sort(credores), mas para isso vc precisa implementar a Interface Comparable ou a Interface Comparator, eu fiz um exemplo com Comparable para vc!!

interface Credor extends Comparable<Credor>{
	public Integer getId();
	public String getNome();
	public String getCredor();
}

Classe Funcionario

class Funcionario implements Credor{
...
        //Caso o outro objeto for "PRESTADOR", ele retorna que este objeto(Funcionario) é menor e coloca ele antes na lista
	@Override
	public int compareTo(Credor outroCredor) {
			if(outroCredor.getCredor().equals("PRES")){
				return -1;
			}
		return 0;
	}
}

Classe Prestador

class Prestador implements Credor{
...
        //Caso o outro objeto for "FUNCIONARIO", ele retorna que este objeto(Prestador) é maior e coloca ele depois na lista
        @Override
	public int compareTo(Credor outroCredor) {
		if (outroCredor.getCredor().equals("FUNC")){
			return 1;
		}
		return 0;
	}
	
}

O retorno 0(Zero) significa que os objetos são iguais

Teste (Main)

public class Listas_ArrayList {
	public static void main(String[] args) {
		ArrayList<Credor> credores = new ArrayList<Credor>();
		
		credores.add(new Prestador(3, "J SA", "PRES"));
		credores.add(new Prestador(4, "J ME", "PRES"));
		credores.add(new Funcionario(1, "Joao", "FUNC"));
		credores.add(new Funcionario(2, "Jose", "FUNC"));
		
		System.out.println("Antes de ordenar");
		System.out.println("ID|  NOME  |  CREDOR");
		for (Credor credor : credores) {
			System.out.println(credor.getId()+" |  "+credor.getNome()+"  |   "+credor.getCredor());
		}
		
		Collections.sort(credores);
		
		System.out.println();
		System.out.println("Depois de ordenar");
		System.out.println("ID|  NOME  |  CREDOR");
		
		for (Credor credor : credores) {
			System.out.println(credor.getId()+" |  "+credor.getNome()+"  |   "+credor.getCredor());
		}
	}
}

Obs*: Não sei se este he o melhor jeito de fazer, de qualquer forma caso queira implementar o Comparator segue dois links tutoriais:


http://serjaum.wordpress.com/2009/07/21/classificacao-com-comparable-e-comparator-em-java/
Obs2*: Eu não coloquei os publics das classes e interface porque eu fiz em um unico arquivo, mas caso seja necessário pode colocar sem problemas.