3

私のプログラムには、次のようなタイプProgramの配列リストがあります。

   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;
     }

私の活動では、リストにアイテムを追加しています

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

そして、リストに100個のアイテムがあり、それらの多くが同じ日付であるように、日付でアイテムをグループ化したいので、日付と同じ日付のアイテムの新しいリストとペアを作成したいと思います。

4

2 に答える 2

4

HashMap使用してキーとしてString date使用でき、値として使用できますArrayList<Program>HashMap.get(key)そのキーを持つオブジェクトが存在しない場合はnullを返します。nullが返された場合は、新しいArraListを作成し、そのキーを使用してHashMap内に配置する必要があります。そうでない場合は、返されたオブジェクトを使用してProgramm インスタンスを追加する必要があります。

  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):
  }

タイプミスを確認してください

于 2013-01-03T11:07:15.520 に答える
2

まず、プログラムクラスは次のようになります。

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;
}

あなたが持っていたようなパブリックフィールドを持っているなら、ゲッターとセッターを作るのは無意味です。

とにかく、HashMapを使用してプログラムを日付で並べ替えることができます。

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);

    }
}
于 2013-01-03T11:17:02.713 に答える