如何在 java 中传递两个日期时 return 来自 arraylist 的对象列表?
how to return a list of objects from arraylist when passed two dates in java?
我正在使用以下代码 return arraylist 中开始日期和结束日期之间的照片对象(日期采用 YYYY-MM-DD 字符串格式)。如果没有这样的对象,它应该 return 空列表。
如何修改才能得到结果?代码分为两部分。这是第一部分:
public class Photo {
private String title;
private string date;
public String getTitle() {
return title;
}
public String getDate() {
return date;
}
这是第二部分:
import java.util.ArrayList;
public class Album {
private String albumtitle;
private ArrayList<Photo> photos;
public ArrayList<Photo> datedPhotos(String date1, String date2) {
String startdate = date1;
String enddate = date2;
ArrayList<Photo> photolist = new ArrayList<>();
for (Photo pho : photos) {
if (pho.getDate().compareTo(enddate)< 0 && pho.getDate().compareTo(startdate)>0) {
photolist.add(pho);
}
}
return photolist;
}`
删除 if 语句中的 return photolist;
,因为您 return arraylist
具有第一个找到的元素
你也在比较那个方法得到的 startDate
和 endDate
。我认为您正在尝试做这样的事情,因为您需要 getter
if(startdate.compareTo(pho.getStartDate())< 0)
您需要将 String
转换为日期,以便可以比较日期。您可以使用 SimpleDateFormat
来实现相同的目的。转换后需要检查每张照片的日期是否在startDate
之后endDate
之前。
public ArrayList<Photo> datedPhotos(String date1, String date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
ArrayList<Photo> photolist = new ArrayList<>();
Date startDate, endDate;
try {
startDate = sdf.parse(date1);
endDate = sdf.parse(date2);
List<Photo> photos = new ArrayList<>();
for (Photo pho : photos) {
if (startDate.before(pho.getDate()) && endDate.after(pho.getDate())) {
photolist.add(pho);
}
}
} catch (ParseException e) {
// Handle Exception accordingly
}
return photolist;
}
我想您的照片对象有一个名为 'date' 的 属性。所以我想你会想要这样的东西来将照片添加到你的 ArrayList
import java.util.ArrayList;
public class Album {
private String albumtitle;
private ArrayList<Photo> photos;
public ArrayList<Photo> datedPhotos(String date1, String date2, ArrayList(Photo) photos) {
String startdate = date1;
String enddate = date2;
//edit - you actually do not need to cycle through the arraylist.....
if (photos.date.compareTo(enddate)< 0 && photos.date.compareTo(startdate) > 0) {
photolist.add(pho);
}
return photolist;
}`
然后在您的代码中的其他地方您将拥有:
Alblum ab = new Album();
ArrayList<photo> myPhotos;
Photo newPhoto = new Photo();
newPhoto.image = "mypicture.jpg";
newPhoto.date = new Date('........');
startdate = new Date('.........');
enddate = new Date('.........);
myPhotos = ab.datedPhotos(startdate, enddate, newPhoto);
现在你有一个 photo 类型的 ArrayList,其中包含一张照片,前提是日期在定义的参数范围内。
我正在使用以下代码 return arraylist 中开始日期和结束日期之间的照片对象(日期采用 YYYY-MM-DD 字符串格式)。如果没有这样的对象,它应该 return 空列表。
如何修改才能得到结果?代码分为两部分。这是第一部分:
public class Photo {
private String title;
private string date;
public String getTitle() {
return title;
}
public String getDate() {
return date;
}
这是第二部分:
import java.util.ArrayList;
public class Album {
private String albumtitle;
private ArrayList<Photo> photos;
public ArrayList<Photo> datedPhotos(String date1, String date2) {
String startdate = date1;
String enddate = date2;
ArrayList<Photo> photolist = new ArrayList<>();
for (Photo pho : photos) {
if (pho.getDate().compareTo(enddate)< 0 && pho.getDate().compareTo(startdate)>0) {
photolist.add(pho);
}
}
return photolist;
}`
删除 if 语句中的 return photolist;
,因为您 return arraylist
具有第一个找到的元素
你也在比较那个方法得到的 startDate
和 endDate
。我认为您正在尝试做这样的事情,因为您需要 getter
if(startdate.compareTo(pho.getStartDate())< 0)
您需要将 String
转换为日期,以便可以比较日期。您可以使用 SimpleDateFormat
来实现相同的目的。转换后需要检查每张照片的日期是否在startDate
之后endDate
之前。
public ArrayList<Photo> datedPhotos(String date1, String date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
ArrayList<Photo> photolist = new ArrayList<>();
Date startDate, endDate;
try {
startDate = sdf.parse(date1);
endDate = sdf.parse(date2);
List<Photo> photos = new ArrayList<>();
for (Photo pho : photos) {
if (startDate.before(pho.getDate()) && endDate.after(pho.getDate())) {
photolist.add(pho);
}
}
} catch (ParseException e) {
// Handle Exception accordingly
}
return photolist;
}
我想您的照片对象有一个名为 'date' 的 属性。所以我想你会想要这样的东西来将照片添加到你的 ArrayList
import java.util.ArrayList;
public class Album {
private String albumtitle;
private ArrayList<Photo> photos;
public ArrayList<Photo> datedPhotos(String date1, String date2, ArrayList(Photo) photos) {
String startdate = date1;
String enddate = date2;
//edit - you actually do not need to cycle through the arraylist.....
if (photos.date.compareTo(enddate)< 0 && photos.date.compareTo(startdate) > 0) {
photolist.add(pho);
}
return photolist;
}`
然后在您的代码中的其他地方您将拥有:
Alblum ab = new Album();
ArrayList<photo> myPhotos;
Photo newPhoto = new Photo();
newPhoto.image = "mypicture.jpg";
newPhoto.date = new Date('........');
startdate = new Date('.........');
enddate = new Date('.........);
myPhotos = ab.datedPhotos(startdate, enddate, newPhoto);
现在你有一个 photo 类型的 ArrayList,其中包含一张照片,前提是日期在定义的参数范围内。