【问题标题】:TreeSet Java Code working in java application but not in android projectTreeSet Java 代码在 java 应用程序中工作但不在 android 项目中
【发布时间】: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 的关键

标签: android date treeset


【解决方案1】:

您的编译器的合规性设置设置为 JRE 1.4(higher 首次出现在 1.5 中)。检查项目的配置(很难在不知道它是哪个工具或 IDE 的情况下提供详细信息)。

最新版本的 Android 不仅支持,甚至要求遵守 JRE 1.5 或 1.6。从中我可以快速测试,Android 2.2 API level 8 抱怨和 Android 3.1 level 12 已经没有。截至今天,最新级别是 17。

查看developer manual,了解如何为 Android 构建正确的应用程序。 public static void main(String[] args) 不是正确的做法。

【讨论】:

    【解决方案2】:

    抛开 cmets 中的参数不谈,如果您真的想要使用 .higher(),那么您必须将最低 API 级别设置为 9 或更高。

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 1970-01-01
      • 2017-05-19
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2012-04-11
      • 1970-01-01
      相关资源
      最近更新 更多