2017-09-20 1 views
0

Ici, comment puis-je rechercher le nom en utilisant contient? Je veux faire correspondre mon résultat d'entrée de arrayList en utilisant .contains.Comment utiliser Contient sur ArrayList de type personnalisé dans Java?

Ce programme Je crée un DataType de nom de classe pour l'utilisation de type de données de type personnalisé.

arrayList.add(new DataType(name,Integer.parseInt(age))); 


    System.out.println("Search Nme : "); 
    String name=new Scanner(System.in).nextLine(); 
    if (arrayList.contains(new DataType(name))) { 
     System.out.println("Find"); 
    } 

Ou,

System.out.println("Search Nme : "); 
    String name=new Scanner(System.in).nextLine(); 
    System.out.println("Search age: "); 
    String age=new Scanner(System.in).nextLine(); 

    if (arrayList.contains(new DataType(name,Integer.parseInt(age)))) { 
     System.out.println("Find"); 
    } 

Custome Type de données Classe

static class DataType { 

String Name; 
int Age; 

public DataType(String name,int age){ 
    Name=name; 
    Age=age; 
} 


public DataType(String name){ 
    Name=name; 
} 

}

+0

vous havent spécifié quelle langue que vous utilisez, les balises d'utilisation pour que –

+0

est un programme java –

Répondre

1

La méthode d'égalisation de substitution dans java est un bon point comme JavaProgrammer12 l'a dit.

Voici un exemple simple pour ce cas.

static class DataType { 

    String Name; 
    int Age; 

    public DataType(String name, int age) { 
     Name = name; 
     Age = age; 
    } 

    public DataType(String name) { 
     Name = name; 
    } 

    @Override 
    public boolean equals(Object fromObj) { 
     DataType dt = (DataType)fromObj; 

     if(Name == null) return false; 
     if(dt.Age == Age) return true; 
     if(dt.Name.equals(Name)) return true; 

     return false; 
    } 
} 

Et vous pouvez tester avec la classe dans un main. Par exemple,

static void containsName1(List<DataType> dtArrayLst, Scanner sc) { 
    System.out.print("Search Nme1 : "); 

    String name = sc.nextLine(); 
    if (dtArrayLst.contains(new DataType(name))) { 
     System.out.println("Find"); 
    } 

    System.out.println(); 
} 

static void containsName2(List<DataType> dtArrayLst, Scanner sc) { 
    System.out.print("Search Nme2 : "); 

    String name = sc.nextLine(); 

    System.out.print("Search age: "); 
    String age = sc.nextLine(); 

    if (dtArrayLst.contains(new DataType(name, Integer.parseInt(age)))) { 
     System.out.println("Find"); 
    } 
    System.out.println(); 
} 

public static void main(String[] args) { 
    String name = "tommybee"; 
    String age = "100"; 

    List<DataType> dtArrayLst = new ArrayList<DataType>(); 

    dtArrayLst.add(new DataType(name, Integer.parseInt(age))); 

    Scanner sc = new Scanner(System.in); 

    containsName1(dtArrayLst, sc); 
    containsName2(dtArrayLst, sc); 

    sc.close(); 
} 

Il y a un bon site de référence si vous voulez en savoir plus sur la méthode absolue égale.

https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/

+0

ce code fonctionne vraiment ....... –

+0

merci, passez une bonne journée! – tommybee

1

Vous devriez être en mesure de le faire en remplaçant égale méthode dans votre classe personnalisée. Comme bonne pratique outrepassent la méthode de hashcode également en remplaçant la méthode égale.