【发布时间】:2013-02-11 09:28:22
【问题描述】:
这是我作为 java 应用程序时的代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.util.Locale;
import java.util.TreeSet;
public class DateRounding {
public static void main(String[] args) throws ParseException {
List ls=new ArrayList();
ls.add (new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse("2010-02-31-14-30"));
ls.add(new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse("2010-02-31-14-50"));
ls.add(new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse("2010-02-31-14-10"));
ls.add(new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse("2010-02-31-14-01"));
final Calendar c = Calendar.getInstance();
String string = "2010-02-31-14-00";
Date date = new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse(string);
Date x=getDateNearest(ls , date);
System.out.println("date:"+x);
System.out.println(ls.indexOf(x));
System.out.println("index:"+ls.indexOf(new SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.ENGLISH).parse("2010-02-31-14-10")));
}
private static Date getDateNearest(List<Date> dates, Date targetDate){
return new TreeSet<Date>(dates).higher(targetDate);
// return targetDate;
}
}
当我将相同的代码添加到 android 项目时显示错误“TreeSet 类型的方法更高(日期)未定义”,但是这个更高()在 java 应用程序中运行良好.....我如何使用更高android中的方法?
【问题讨论】:
-
您应该以不同的方式实现 getDateNearest() 方法,也许使用迭代器并自己比较日期,它可能会解决您的问题,并在 android 设备/amulator 上进行测试。
-
@Meh 是对的 - 创建一个新的树集只是为了使用更高的函数并丢弃集合和惰性列表编程,效率非常低。自己实现排序和搜索,效率会高得多——这是 Android 的关键