Estou aprendendo java na faculdade e estou com dificuldades de desenvolver a lógica para fazer busca em um Arraylist. Quero saber se existe senha cadastrada pelo atributo tipo, as senhas foram geradas com um valor char(tipo) e um valor int(numero) e concatenados dentro do ArrayList. Ex senhas: R-1,P-1,C-1.
Quero pesquisar através do metodo Caixa1 primeiramente na lista, apenas as senhas iniciadas com P respeitando a fila, da primeira cadastrada até a última, e depois de todas encontradas e eliminadas, então pesquisar por C e R sem necessidade de prioridade, essas duas últimas serão aleatórias de acordo com a posição na fila.
Deixa exemplificar de outra forma:
Digamos que eu adiciono senhas nessa sequência no ArrayList: C-1, P-2, C-3, R-4, P-5, P-6, R-7.
Aí suponha que desejo extrair todas senhas do ArrayList pelo caixa 1, mas o caixa1 deve priorizar as senhas P(Prioritárias) que deve seguir o seguinte processo, remover na ordem de inserção: P-2, P-5, P-6.
Depois continuando a remoção através do metodo caixa1, ele deve continuar e remover na ordem que sobrou sem prioridade: C-1, C-3, R-4, R-7.
Código fonte do Jframe para atribuir o tipo e número ao ArrayList.
public class Atendimento extends javax.swing.JFrame {
List<Senha> listaSenhas;
int numero;
public Atendimento() {
initComponents();
numero = 0;
listaSenhas = new ArrayList<Senha>();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
//Inserção das senhas no Arraylist através da Classe Senha com atributos Tipo e Numero concatenados para dentro do Arraylist
private void clienteComumActionPerformed(java.awt.event.ActionEvent evt) {
numero++;
Senha senha = new Senha('C', numero);
listaSenhas.add(senha);
senhaGerada.setText(String.valueOf(senha.getTipo())+'-'+String.valueOf(senha.getNumero()));
}
private void clientePrioritarioActionPerformed(java.awt.event.ActionEvent evt) {
numero++;
Senha senha = new Senha('P', numero);
listaSenhas.add(senha);
senhaGerada.setText(String.valueOf(senha.getTipo())+'-'+String.valueOf(senha.getNumero()));
}
private void clienteRapidoActionPerformed(java.awt.event.ActionEvent evt) {
numero++;
Senha senha = new Senha('R', numero);
listaSenhas.add(senha);
System.out.println("lista depois"+listaSenhas);
senhaGerada.setText(String.valueOf(senha.getTipo())+'-'+String.valueOf(senha.getNumero()));
}
//Busca, apresentação e remoção
private void jbcaixa1ActionPerformed(java.awt.event.ActionEvent evt) {
saidaCaixa.setText("Caixa 1");
IIterator<Senha> itr = listaSenhas.iterator();
while(itr.hasNext()){
Senha s = itr.next();
if (s.getTipo() == 'P') {
saidaSenha.setText(String.valueOf(s.getTipo())+'-'+String.valueOf(s.getNumero()));
itr.remove();
break;
}
} // Após isso preciso criar lógica para apresentar/remover as senhas iniciadas em C e R sem necessidade de priorizar ordem, apenas respeitando a ordem que foram adicionadas na lista.
}
private void jbcaixa2ActionPerformed(java.awt.event.ActionEvent evt) {
saidaCaixa.setText("Caixa 2");
Iterator<Senha> itr = listaSenhas.iterator();
while(itr.hasNext()) {
Senha s = itr.next();
itr.remove();
saidaSenha.setText(String.valueOf(s.getTipo())+'-'+String.valueOf(s.getNumero()));
break;
}
}