O fai come suggerisce floyd, oppure qualcosa del genere (ma mi piaceva giocare un po' con String split... )

codice:
import java.io.*;

public class Nome {
  private String nome;
  private String cognome;
  private String luogodiNascita;
 
  public Nome(String n, String c, String l) {
    nome = n;
    cognome = c;
    luogodiNascita = l;
  }
 
  public String getNome() {
    return nome;
  }

  public String getCognome() {
    return cognome;
  }

  public String getLuogodiNascita() {
    return luogodiNascita;
  }
  
  
  public static void main(String arg[])throws Exception {
    Nome lista[] = new Nome[3];
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  
    for(int i=0; i<3; i++){
      System.out.println("Dammi il nome");
      String nome = br.readLine();
      System.out.println("Dammi il cognome");
      String cognome = br.readLine();
      System.out.println("Dammi il luogo di nascita");
      String luogo = br.readLine();
      lista[i] = new Nome(nome,cognome,luogo);
    }
    
    String temp = "napoli";
    String who = ""; //puro comodo per estrarre gli indici del vettore in cui luogoDiNascita() è temp
  
    for(int j=0; j<lista.length; j++){
      if(temp.equals(lista[j].getLuogodiNascita())) {
        who +=j+",";
      }
    }
  
    if (who.length() > 1) { //se ne trova almeno uno nato a temp allora prosegue con la creazione della nuova lista
      String[] indici = who.split(",");
      Nome lista2[] = new Nome[indici.length];
      for(int k=0; (k<indici.length) && (!indici[k].equals("")); k++){
        lista2[k]=lista[Integer.parseInt(indici[k])];
      }
    
      for (int k=0; k < lista2.length; k++) {
	  System.out.println(lista2[k].getNome()+" "+lista2[k].getCognome());
      }
    }
    else {
      System.out.println("nessuno presente con luogo di nascita = "+temp);
    }
  }
}