在我的程序中,我有一个类型为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):
}
我希望按日期对项目进行分组,就像列表中有数百项,其中许多项目具有相同的日期,我想与日期和具有相同日期的项目的新列表进行配对。
答案 0 :(得分:3)
您可以使用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):
}
检查拼写错误
答案 1 :(得分:2)
首先,您的Program类应该如下所示:
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);
}
}