如何从android中的数组列表中获取两个特定值之间的所有值?

时间:2013-01-29 10:25:18

标签: android arraylist

我有arraylist字符串类型。在此arraylist我存储了一些日期,如

 ArrayList<String> date = new ArrayList<String>();
    date.add("20-jan-2013 11:32:39 AM");
    date.add("21-jan-2013 11:32:39 AM");
    date.add("22-jan-2013 11:32:39 AM");
    date.add("23-jan-2013 11:32:39 AM");
    .
    .
    .
    .
    .
    .
    date.add("29-jan-2013 11:32:39 AM");

数组列表中超过20个值。我的问题是我如何从arrayList获取两个值(日期)之间的值(日期),如此日期21-jan-2013 11:32:39 AM to 27-jan-2013 11:32:39 AM. 帮帮我谢谢

4 个答案:

答案 0 :(得分:2)

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mmm-yyyy hh:mm:ss aa");
Date convertedDate = new Date();
ArrayList<String> filteredDate=new ArrayList<String>;
Iterator<String> iterator = lList.iterator();

for (String temp : lList) 
{
 try
    {
    convertedDate = dateFormat.parse(temp);
     } 
    catch (Exception e) 
    {
    e.printStackTrace();
    }
    if((convertedDate.before(date2)) && (convertedDate.after(date1))) //here "date2" and "date1" must be converted to dateFormat
    {
      filteredDate.add(convertedDate); // You can use these filtered ArrayList
    }
}

答案 1 :(得分:0)

List<String> result = new ArrayList<String>();
boolean foundFirst = false;
for(String s : date) {
    if(!foundFirst) {
        if(s.equals(myFirstElement)) {
            foundFirst = true;
            result.add(s);
        }
    } else {
        result.add(s);
        if(s.equals(myLastElement) {
            break;
        }
    }
}

答案 2 :(得分:0)

这样的事情会起作用:

    ArrayList<String> date = new ArrayList<String>();

    int begin=0, end=0;
    for(int i = 0; i < date.size(); i++){
        if(date.get(i).equals(myFirstDate)){
            begin = i;
        }
        if(date.get(i).equals(myLastDate)){
            end = i;
        }
    }

    ArrayList<String> myDates = new ArrayList<String>();
    for(int i = 0; i < (end - begin); i++){
        myDates.add(date.get(i + begin));
    }

答案 3 :(得分:-1)

做这样的事情:

private ArrayList<String> filter(ArrayList<String> original, String startDate, String endDate) {
    TimeStamp start = ...; 
    TimeStamp end = ...;

这里你需要获取字符串值的时间戳,看看这是如何工作的,看看这个question, and the provided answer

    ArrayList temp = new ArrayList<String>();
    for (int i= 0; i < original.size(); i++) {
       TimeStamp currentTimeStamp = timestamp of original.get(i)
       if (start < currentTimeStamp && stop > currentTimeStamp) {
           temp.add(original.get(i));
       }
    }
    return temp;
}

这应该可以解决您的问题