特殊字符串数组排序列表,按日期

我的ArrayList。

这是一个字符串的ArrayList。 该字符串包含一个"Date.toString"在格式"January 1, 1970, 00:00:00 GMT" +任务名称。

例如:

"January 1, 1970, 00:00:00 GMT clean the house".

我想排序此ArrayList按日期。
我该怎么办呢?

--------------解决方案-------------

可以写一个分析的日期,并利用它们进行排序比较date.compareTo(otherDate)但我建议你保存dates ,而不是Strings摆在首位,使分类更加容易(日期实现Comparable<Date>

(如果你的输入格式String ,然后转换成Strings的时候将它们添加到列表中)

对于每一个String ,将其转换为一个Date ,可能使用SimpleDateFormat ,并把他们都在一个TreeMap<Date,String> ,这将对其进行排序为您服务。

编辑:随着@Sean帕特里克·弗洛伊德认为,这样做的投入。

我会先转换成该数组列表类似

public class Event {
private Date date;
private String description;
...
}

在此之后,创造一个比较来比较两个事件是这样的:

public class EventComparator implements Comparator<Event>{
public int compare(Event e1, Event e2) {
return e1.getDate().compareTo(e2.getDate());
}
}

这将节省您吨与(原谅我)分析每个字符串每次比较比较性能。

写在一个比较器,转换字符串日期进行比较。 Collections.sort(List, Comparator);之后,没有工作。

写你自己的比较。 然后用Collections.sort(arrayList, myComparator);

Comparator<String> myComparator = new Comparator<String>() {

int compareTo(String string1, String string2) {
......
}

boolean equals(String str1) {
......
}

}

数组转换成日期列表,然后对它们进行排序:

List<Date> dates = new ArrayList<Date>();
for(String s : dateStringArray){
// split the date and task name
Pattern p = Pattern.compile("(\\w+ \\d{1,2}, \\d{4}, \\d{2}:\\d{2}:\\d{2} \\w{3})(.*)");
Matcher matcher = p.matcher(s);
String taskname = "";
String datestring = "";
if (matcher.find()) {
datestring = matcher.group(1);
taskname = matcher.group(2);
}
// parse the date
Date d = new SimpleDateFormat("MMMM dd, yyyy, HH:mm:ss z",
Locale.ENGLISH).parse(datestring);
dates.add(d);
}
// sort the dates
Collections.sort(dates);

如果你想保留的任务名称,你将不得不作出有日期和领域的任务,是通过日期可比自己的对象。

分类:java的 时间:2012-01-01 人气:0
本文关键词: 的java,分拣,数组列表
分享到:

相关文章

  • java的数组列表添加空指针异常 2012-11-19

    public class Human { private int age; private float height; private float weight; private String name = new String(); public Human() { } public Human(String name, int age, float height, float weight) { this.name = name; this.age = age; this.height =

  • Java的数组列表,用于存储userinput 2013-04-19

    我怎样才能得到它回去,开始另一个目录,当用户类型是还怎么做我打印出来的ArrayList使用打印格式 谢谢 import java.util.ArrayList; import java.util.Scanner; public class AAA { public static void main(String[] args) { ArrayList<String> name = new ArrayList<String>(); ArrayList<Integer>

  • 的ArrayList java的数组列表 2014-01-18

    喜的时候想有类似向量的向量(元素责令当然)我认为有的ArrayLists的ArrayList的,但在C ++中我会做这个访问的元素v.at(i).at(j)=5;而当我需要添加新的元素v.at(i).push_back(value);那么,如何做到这一点在Java中? 因为我只能访问外数组列表,但我不知道如何添加新元素......,是有更好的方法来模拟在java中的载体C ++的载体? PS(它不是一个矩阵3 * 2为前,但每一个ArrayList中可以有不同的大小) -------------

  • java的数组列表格式 2014-04-15

    我有在Java中ArrayList中的一个问题. 我在数据库好的:)我们通常使用"GROUP BY"进行分组行. 我希望同样的事情,但在Java中为我的项目之一,我有以下的数组列表格式 name1:val1 name1:val2 name1:val3 name2:val8 name2:val7 name7:val54 name7:val76 name7:val34 我想转换此ArrayList给我以下的输出: -name1 val1 val2 val3 -name2 val8 val7

  • 从填充在Java中数组列表一个字符串数组 2014-04-18

    这是我第一次涉足Java,所以原谅我,如果这很简单,但我有困难,通过迭代列表和填充与列表项的字符串数组. 具体来说,我使用Jsoup解析URL并提取某些元素: Document doc = Jsoup.connect(content).get(); Elements threads = doc.getElementsByClass("page-link"); for (Element src : threads){ String title = src.text(); String h

  • Java的数组/列表的循环 2013-10-27

    我有我的java程序,通过阵列迭代循环以下. 我现在,这不是有效的实现,因为我节省了每个客户5的位置和这个循环运行时,它打印保存位置的整个阵列(第五圈就打印所有5保存的位置). 我只是想打印客户搜索到上次保存的位置. 我认为第一外while循环for循环,然后设置变量假中的最后一个for循环的地方,但这并没有工作. 在我下面的代码关注的领域是c.getLocations()它存储所有位置的客户搜索. 有没有什么办法可以修改这一点,所以它只是给了我最后添加的位置? List<CustomerCit

  • Java的数组列表检索数据最小值/最大值 2014-09-02

    我做我的Java功课的一类. 我写道,用户输入一个4位数字的ID和金钱什么他们对那家商店ID下面的存储程序. 此信息获取的投入的阵列. 总数和店铺ID的检索. 在我的程序的下一个部分,我从每个数据组检索最小值和最大值:偶数和奇数存储ID号. 我试图通过检索origonal数据,并把它们放入一个新的数组来做到这一点. 即使数据连成一片,数组和奇数据进入一个奇怪的数组. 在下面的代码我测试偶数部分. 一旦它的工作原理,我将在奇数部分复制. 现在下面的代码跳过了我的请求. 我不知道如何解决这个问题.

  • 为什么我设置工作作为Java编程数组列表? 2012-06-12

    您好再次同胞的程序员. 所以我创建一个程序,允许用户指定他们希望作为一项保险政策的一部分保险的类型. 因为他们只有4种封面可供选择我想用一组或哈希集跟踪提供给用户的各类盖的. 问题是似乎并没有摆脱它对待它像一个ArrayList重复的,当我打印出集的内容,我得到它不应该在一组发生重复. 这是我以前所创建的保险类型对象传递给保险class.After他们已经被实例化的代码. CoverType theInsuranceType = new CoverType("Fire",250); t

  • Java的数组列表 - 复制一个到另一个没有重复 2012-11-18

    我有一个ArrayList : Arraylist<Person> list1 = new ArrayList<Person>(); list1.add(new Person("John", 0)); list1.add(new Person("Kane", 0)); list1.add(new Person("Jen", 0)); 而另一家ArrayList Arraylist<Person> list2 =

  • Java快速数组列表 2012-12-18

    我有一个很简单的问题: 我怎么可以对Java的这个代码更简单: ArrayList<String> s = new ArrayList<String>(); s.add("str1"); s.add("str hello"); s.add("str bye"); //... 类似的东西: ArrayList<String> s = {"a1", "str", "

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.354 (s). 10 q(s)