2013-01-03 2 views
1

Dans mon programme j'ai une liste de tableau de programme de type comme celui-ci:articles Groupe ArrayList par date dans Android

List<Program> programList= new ArrayList<Program>(); 

public class Program { 

public String name; 
public String date; 

public Program(String name, String date) { 
    this.name = name; 
    this.date= date; 
} 
    public String date getDate() 
    { 
    return date; 
    } 

    public String date setDate(String date) 
    { 
    this.date=date; 
    } 

     public String date getName() 
    { 
    return name; 
    } 

    public String date setName(String name) 
    { 
    this.name=name; 
    } 

et dans mon activité, je suis d'ajouter des éléments à la liste

 for(int i=0; i < 100; i++) 
     { 
     Program p= new Program("name","some date"); 
     programList.add(p): 
     } 

Et Je veux regrouper les articles par date, comme il y a cent articles dans la liste et beaucoup d'entre eux ont la même date, je veux faire des paires avec la date et les nouvelles listes des articles ayant la même date.

Répondre

2

Tout d'abord, votre classe de programme devrait ressembler à ceci:

private String name; 
private String date; 

public Program(String name, String date) { 
    this.name = name; 
    this.date = date; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDate() { 
    return date; 
} 

public void setDate(String date) { 
    this.date = date; 
} 

Si vous avez des champs publics comme vous aviez, il est inutile de faire des getters et des setters.

Quoi qu'il en soit, vous pouvez utiliser HashMap pour trier les programmes par date:

private static class Bucket { 

    private List<Program> programs = new ArrayList<Program>(); 

    private static HashMap<String, Bucket> map = new HashMap<String, Bucket>(); 

    public static void addProgram(Program p) { 
     String tempDate = p.getDate(); 
     Bucket correspondingBucket = map.get(tempDate); 
     if (correspondingBucket == null) { 
      correspondingBucket = new Bucket(); 
      map.put(tempDate, correspondingBucket); 
     } 
     correspondingBucket.programs.add(p); 

    } 
} 
+0

semble que ça va sûrement fonctionner. Je vais l'essayer et ensuite je vais accepter votre réponse :) merci beaucoup, – Munazza

2

Vous pouvez utiliser un HashMap et utiliser comme clé le String date, en tant que valeur, vous pouvez utiliser un ArrayList<Program>. HashMap.get(key) renverra null si un objet avec cette clé n'existe pas. Si elle renvoie null, vous devez créer une nouvelle ArraList et la placer dans HashMap avec cette clé. Si cela ne vous devez utiliser l'objet retourné pour ajouter le Programm exemple par exemple

HashMap<String, ArrayList<Programm>> myProgram = new HashMap<String, ArrayList<Programm>>() ; 
    for(int i=0; i < 100; i++) 
    { 
    String date = "your date"; 
    ArrayList<Programm> programList = myProgram.get(date); 
    if (programList == null) { 
     programList = new ArrayList<Programm>(); 
     myProgram.put(date, programList); 
    } 
    Program p= new Program("name","some date"); 
    programList.add(p): 
    } 

chèque de faute de frappe

+0

je vais l'essayer et j'accepterez ur réponse :) merci beaucoup, oui ce – Munazza

+0

fonctionne grâce. –