Comment rechercher des éléments dans une ArrayList? - Java


DrMe :

J'ai créé un programme To-Do-List en java où vous pouvez ajouter, supprimer et afficher des tâches avec des noms, des dates, des heures spécifiques, etc.

Cependant, j'essaie d'ajouter une option où, lorsque l'utilisateur sélectionne "5", il peut entrer une date et si des tâches tombent à cette date particulière, elles seront répertoriées.

Par exemple:

----------------------
Main Menu
----------------------
1. Add a task
2. Delete a task
3. Delete all tasks
4. List all tasks
5. Search for a task
6. Exit the program

Enter choice: 5

Enter a date: 20/10/2020

Here are the tasks for 20/10/2020:

-task1-
-task2-
etc...

Jusqu'à présent, lorsque je fais cela, aucune tâche ne revient même si elles existent à cette date spécifique.

Voici mon code jusqu'à présent: (searchTasks () est en bas du code)

import java.util.ArrayList;
import java.util.List;
import java.text.ParseException;
import java.util.Scanner; 

class Task{

private String theTitle;
private String theDate;
private String theTime;
private String theLocation;
private String theDuration;
private String theCategory;

Task(String title, String date, String time, String location, String duration, String category) {
    
    theTitle = title;
    theDate = date;
    theTime = time;
    theLocation = location;
    theDuration = duration;
    theCategory = category;
    
}

public String getTitle() {
    
    return theTitle;
}

public String getDate() {
    
    return theDate;
}

public String getTime() {
    
    return theTime;
}

public String getLocation() {
    
    return theLocation;
}

public String getDuration() {
    
    return theDuration;
}

public String getCategory() {
    
    return theCategory;
}

public String getItem() {
    
    return theTitle + ", " + theDate + ", " + theTime + ", " + theLocation + ", " + theDuration + ", " + theCategory;
}

}


public class ToDoList {

public Task myTaskObj;
private static List<String> currentList = new ArrayList<String>();

public ToDoList() {
    
}

public static void main (String[] args) {
    
    ToDoList listObj = new ToDoList();
    
    int menuItem = -1;
    while (menuItem != 6) {
        menuItem = listObj.printMenu();
        switch (menuItem) {
        case 1:
            listObj.addItem();
            break;
        case 2:
            listObj.removeItem();
            break;
        case 3:
            listObj.removeAllTasks();
            break;
        case 4:
            listObj.showList();
            break;
        case 5:
            listObj.searchTasks();
            break;
        case 6: 
            System.out.println("Goodbye!");
        default:
            System.out.println("Enter a valid option");
        }
    }   
    
}

public int printMenu() {
    
    Scanner scanner = new Scanner(System.in);
    System.out.println();
    System.out.println("----------------------");
    System.out.println("Main Menu");
    System.out.println("----------------------");
    System.out.println("1. Add a task");
    System.out.println("2. Delete a task");
    System.out.println("3. Delete all tasks");
    System.out.println("4. List all tasks");
    System.out.println("5. Search for a task");
    System.out.println("6. Exit the program");
    System.out.println();
    System.out.print("Enter choice: ");
    int choice = scanner.nextInt();
    
    return choice;
    
}

public void showList() {
System.out.println();
System.out.println("----------------------");       
System.out.println("To-Do List");
System.out.println("----------------------");
int number = 0;
for (String item : currentList) {
    System.out.println(++number + ". " + item);
}
System.out.println("----------------------");


}

public void addItem() {
System.out.println("Add a task");
System.out.println("----------------------");

System.out.print("Enter the task title: ");
Scanner scanner = new Scanner(System.in);
String title = scanner.nextLine();


System.out.print("Enter the task date: ");
Scanner scanner2 = new Scanner(System.in);
String date = scanner2.next();


System.out.print("Enter the task time: ");
Scanner scanner3 = new Scanner(System.in);
String time = scanner3.nextLine();

System.out.print("Enter the task location: ");
Scanner scanner4 = new Scanner(System.in);
String location = scanner4.nextLine();

System.out.println("Enter the task duration (optional - press enter to skip): ");
Scanner scanner5 = new Scanner(System.in);
String duration = scanner5.nextLine();

System.out.println("Enter the task category (optional - press enter to skip): ");
Scanner scanner6 = new Scanner(System.in);
String category = scanner6.nextLine();

myTaskObj = new Task(title, date, time, location, duration, category);

String theItem = myTaskObj.getItem();

currentList.add(theItem);
System.out.println("Task Added!");



}

public void removeItem() {
System.out.println("Delete a task");
System.out.println("----------------------");
Scanner scanner = new Scanner(System.in);
System.out.print("What do you want to remove? (Enter number): ");
int index = scanner.nextInt();
if((index-1)<0 || index>currentList.size()) {
    System.out.println("Wrong index number! Please enter in range of 1 to "+currentList.size());            
}else {
    currentList.remove(index-1);
}
System.out.println("----------------------");
System.out.println("Task Removed!");


}

public void removeAllTasks() {

System.out.println("Remove all tasks");
System.out.println("----------------------");
showList();

Scanner keyboard = new Scanner(System.in);
System.out.print("Are you sure you'd like to delete all tasks? 'Yes' or 'No': ");
String choice = keyboard.nextLine();
if(choice.equals("Yes")) {
    currentList.removeAll(currentList);
    System.out.println("All tasks deleted!");
}
else 
    if(choice.equals("No"))
    System.out.println("Tasks not deleted");

}

public void searchTasks() {
System.out.println("Search for a task: ");
System.out.println("----------------------");
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a date: ");
String date = keyboard.nextLine();

boolean flag = false;
for (String list: currentList){
       String searched_date = list.split(", ")[1];
       if (searched_date.equals(date)){
           flag = true;
           break;
       }
    }   

}
    
}
Ayush:

En plus de la réponse de keyboardwarrior, oui une façon de le faire aurait été d'avoir List<Tast> currentListcomme ArrayList.

Cependant, si vous ne souhaitez pas modifier votre code, vous pouvez le contourner en procédant ainsi:

1) Parcourez les éléments (de type String) dans votre currentList
2) Divisez l'élément en utilisant le ", "comme séparateur, c'est-à-dire item.split(", ")
3) Pendant votre conversion en Chaîne entre getItem(), la date est la deuxième chose que vous ajoutez à la chaîne, c'est-à-dire la première chose après la première virgule (,).
Alors, item.split(", ")[1]qu'est-ce qui va contenir la date.
4) Comparez cela à la date que vous souhaitez rechercher, dans chaque boucle. Cassez quand vous le trouvez.

boolean found = false;
for (String task: currentList){
       String searched_date = task.split(", ")[1];
       if searched_date.equals(date){
           found = true;
           System.out.println(task);
       }
}
if (!found){  // if there was no task found for the specified date
    System.out.println("No Task Found");
}

Articles connexes


Rechercher des éléments partagés dans une liste

Jeremy: Je peux trouver les éléments partagés de chaque donnée dans une petite liste. Un exemple simplifié est ici: data_1 <- c("A","B") data_2 <- c("A","B","C") data_3 <- c("A","B","C","D") data_4 <- c("A","B","F","N") list.a <- list(data_1,data_2,data_3,dat

Comment rechercher des éléments connectés dans une matrice?

Giovanni Ruggieri: J'ai une matrice sous cette forme: In [1]: df = pd.DataFrame([[0, 0, 1, 1, 1], [0, 0, 0, 1, 0], [1, 0, 0, 0, 0], [1, 1, 0, 0, 1], [1, 0, 0, 1, 0]], columns = list('ABCDE'), index = list('ABCDE')) In [2]:df Out[2]: A B C D E A 0 0

Comment ArrayList dans Java stocke des éléments

user12506803: import java.util.ArrayList; public class Box{ private String name; private int size; public Box(String name, int size){ this.name = name; this.size = size; } @Override public String toString(){

rechercher des éléments dans une liste

Jeanne J'ai un tableau de bord avec deux listes qui basculent. Lorsque j'appuie sur le tableau de bord hebdomadaire - la liste hebdomadaire s'affiche et lorsque j'appuie sur le tableau de bord global, l'ensemble s'affiche. Juste pour référence, cela fonctionne

Comment rechercher des éléments de tableau dans Ionic 3?

Thameur Daly S'il vous plaît, j'utilise un nom de modèle ResProject et une variable resProject: Observable; c'est mon code: import { Component } from '@angular/core'; import { IonicPage, NavController, NavParams } from 'ionic-angular'; import { Observable } fr

Rechercher des éléments dupliqués dans une matrice

Gant blanc introduction Je fais des devoirs où nous sommes chargés de faire un jeu de recherche de paires. J'ai fait une matrice et l'ai remplie de lettres comme telles: Display ---------------- C H F E G F D D E C H B A B G

Comment rechercher des éléments dans CollectionView

Le haut J'ai un ObservableRangeCollection qui se compose de quelques éléments. Comment puis-je effectuer une recherche dans le ViewModel de la page? Éditer: ObservableCollection dans ViewModel: private ObservableRangeCollection <Smetka> _smetki = new Observabl

Listes "Rechercher et supprimer des éléments dans une liste"

j j Maintenant, je m'entraîne avec des listes, j'ai donc créé 2 listes, donc en gros je recherche dans l'une d'elles des valeurs qui ne sont pas dans la deuxième liste et si ce n'est pas là, je veux la supprimer de la liste. Mais les résultats n'ont pas toutes

Python: rechercher des éléments dans une liste

user6950712 def for i in play.inventory: if "Sword" in i and "[S]lash" not in abilities: abilities.append("[S]lash") elif "Bow" in i and "[F]ire" not in abilities: abilities.append("[F]ire") elif "Fists" in i

Rechercher des éléments identiques dans une table en Lua?

Pologne chrétienne Comment vérifieriez-vous un tableau pour trois éléments identiques (à la recherche de trois L)? table = {nil, nil, L, nil, L} -> false table = {L, L, nil, nil, L} -> true J'apprécierais vraiment de l'aide! EDIT: Ok, j'ai ceci, mais il ne pr

UDF pour rechercher des éléments dans une table

Mikayla Gambell J'ai besoin de créer une fonction définie par l'utilisateur qui acceptera un OwnerID comme entrée et produira un vecteur avec le ou les PetID associés. import matplotlib.pyplot as plt import numpy as np import pandas as pd pets

Comment rechercher des éléments dans une liste imbriquée

Abdelrahman Tamer J'essaie donc d'obtenir uniquement les éléments recherchés avec une hiérarchie en utilisant la zone de saisie en haut de la page. Mon code actuel n'affiche que les éléments de la liste principale dans la liste parent. Résultats actuels : Résu