ArrayList Java中的搜索元素

时间:2015-05-18 23:49:01

标签: java search arraylist

我正在试图弄清楚如何按ArrayList中的元素进行搜索。

这是我的代码:

    package trabalho.arquivos;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class TrabalhoArquivosAlt {

  public static void main(String[] args) throws IOException {
    ArrayList<String> agenda = new ArrayList<String>();
    Scanner ler = new Scanner(System.in);
    int opcao;

    importar(agenda);

    do {
      System.out.printf("----------------------------MENU----------------------------\n");
      System.out.printf("[ 1 ] Incluir\n");
      System.out.printf("[ 2 ] Excluir\n");
      System.out.printf("[ 3 ] Listar\n");
      System.out.printf("[ 4 ] Pesquisar\n");
      System.out.printf("[ 0 ] Encerrar (Use esta opção para salvar as modificações)\n");
      System.out.printf("------------------------------------------------------------\n");
      System.out.printf("\nOpção Desejada: ");

      opcao = ler.nextInt();

      switch (opcao) {
        case 1: incluir(agenda); break;
        case 2: excluir(agenda); break;
        case 3: listar(agenda); break;
        case 4: pesquisar(agenda);
      }

      System.out.printf("\n\n");

    } while (opcao != 0);

    exportar(agenda);
  }

  public static void importar(ArrayList<String> agenda) {
    try {
      FileReader arq = new FileReader("arquivo.txt");
      BufferedReader lerArq = new BufferedReader(arq);
      String linha = lerArq.readLine(); // lê a primeira linha
      // a variável "linha" recebe o valor "null" quando o processo
      // de repetição atingir o final do arquivo texto
      while (linha != null) {
        agenda.add(linha);
        linha = lerArq.readLine(); // lê da segunda até a última linha
      }
      arq.close();
    } catch (IOException e) {
        System.err.printf("Erro na abertura do arquivo: %s.",
          e.getMessage());
    }
  }

  public static void exportar(ArrayList<String> agenda)
    throws IOException {
    FileWriter arq = new FileWriter("arquivo.txt");
    PrintWriter gravarArq = new PrintWriter(arq);
    int i, n = agenda.size();
    for (i=0; i<n; i++) {
      gravarArq.printf("%s%n", agenda.get(i));
    }
    gravarArq.close();
  }


  public static void incluir(ArrayList<String> agenda) {
    Scanner ler = new Scanner(System.in);
    String nome;

    System.out.printf("\nInforme o nome do contato:\n");
    nome = ler.nextLine();

    // grava os dados no final da "lista"
    agenda.add(nome);
  }

  public static void excluir(ArrayList<String> agenda) {
    Scanner ler = new Scanner(System.in);
    int i;

    listar(agenda);

    System.out.printf("\nInforme o número a ser excluído:\n");
    i = ler.nextInt();

    try {
      agenda.remove(i);
    } catch (IndexOutOfBoundsException e) {
        // exceção lançada para indicar que um índice (i)
        // está fora do intervalo válido (de 0 até agenda.size()-1)
        System.out.printf("\nErro: número inválido (%s).\n\n",
          e.getMessage());   
    }
  }

  public static void listar(ArrayList<String> agenda) {
    System.out.printf("\nLista de todos os nomes:\n");
    int i, n = agenda.size();
    for (i=0; i<n; i++) {
      System.out.printf("%d - %s\n", i, agenda.get(i));
    }
    System.out.printf("------------------------------------------------------------");
  }

  public static void pesquisar(ArrayList<String> agenda) {
    Scanner ler = new Scanner(System.in);

    System.out.printf("\nInforme o número do contato:\n");
}
}

例如,我的列表是:

  1. Gilson
  2. 马科斯
  3. 若阿金
  4. 我希望找到元素为“1”的人,而不是节目搜索元素“1”并打印他的名字“Gilson”。

0 个答案:

没有答案