Я создаю приложение, в котором каждый пользователь имеет свой профиль. Эти профили хранятся в файле ArrayList
. У меня проблемы при создании метода для поиска зарегистрированных или присутствующих в ArrayList
нем пользователей, и я должен сделать это с 2 параметрами Nombre
и Apellido
.
У меня есть следующий класс:
import java.util.*;
public class Profilo {
static String Nombre;
static String Apellido;
String Intereses;
boolean visible;
//contructor
public Profilo(String nombre, String apellido,String intereses,
boolean visibilidad) {
this.Nombre= nombre;
this.Apellido= apellido;
this.Intereses= intereses;
this.visible = visibilidad;
}
public String getNombre() {
return this.Nome;
}
public String getApellido() {
return this.Cognome;
}
И еще один класс, который будет содержать методы входа, регистрации и поиска пользователей:
import java.util.ArrayList;
import java.util.Scanner;
public class PerfilManager {
static ArrayList<Profilo> Users = new ArrayList();
static Scanner sc = new Scanner(System.in);
public static void Login() {
//codigo
}
public static void Registrarse() {
//codigo
}
public static void InizializaDati(){
String nombre;
String apellido;
String intereses;
boolean visibile;
System.out.println("nombre:");
nombre= sc.next();
System.out.println("apellido:");
apellido = sc.next();
System.out.println("intereses:");
intereses= sc.next();
System.out.println("visible?(true/false)");
visibile = sc.nextBoolean();
Perfil perfil= new Perfil(nombre,apellido,intereses,visibile);
Users.add(perfil);
System.out.println("peril creado!");
ShowPerfil();
}
public static void BuscaPerfil(String nome , String cognome) {
for(int i = 0 ; i < Users.size();i++) {
if(Users.get(i).visibile != false) {
//muestra perfil
} else {
System.out.println("Este perfil es privado");
}
}
}
}
Лучший способ поиска в списке
List
— перебирать его элементы и выполнять поиск:Я изменил метод, чтобы он возвращал файл
Profilo
. Таким образом, клиент метода, то есть место, где используется метод, может выполнить определенное действие с результатом метода. Действие может быть следующим: отобразить данные объекта на экране, использовать его для массового обновления данных, использовать объект как часть другого объекта и т. д.Начиная с Java 8 метод поиска можно свести к следующему:
Советы по улучшению вашего текущего кода (не часть основной проблемы, указанной в вопросе).
В Java статические члены (атрибуты и методы) принадлежат классу, а не экземплярам класса (объектам). Если вы объявляете атрибут статическим, поскольку атрибут принадлежит классу, а не объекту, то при присвоении значения указанному атрибуту это значение будет общим для всех экземпляров класса. Поэтому в вашем классе
Profilo
поля не должны быть статическими. В дополнение к этому все поля должны иметь по крайней мере свой метод получения.Класс
Profilo
должен выглядеть так:Поскольку
Users
этоArrayList
объектprofilo
, вы можете получить значения таким образом: