如何使用android中的集合从Array列表中获取值,两个日期之间的数据(开始,结束)?

时间:2015-09-29 06:40:27

标签: android sorting arraylist collections

我在arraylist日期升序中使用以下代码,它的工作正常。但我需要修改该代码,以便从arraylist中获取开始日期和结束日期之间的数据。

我如何根据我的要求修改它?

升序订单代码(正常工作)

 Collections.sort(adapter.modelValues, new Comparator<Actors>() {
                    @Override
                    public int compare(Actors lhs, Actors rhs) {
                        Date d1 = null, d2 = null;
                        try {
                            SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
                            String a = lhs.getlastaction();
                            String b = rhs.getlastaction();
                            d1 = f.parse(a);
                            d2 = f.parse(b);                             

                        } catch (Exception e) {
                            Toast.makeText(getActivity().getApplicationContext(), String.valueOf(e.getMessage()), Toast.LENGTH_LONG).show();
                        }

                        return d1.compareTo(d2);

                    }
                });

代码之间的日期(不工作)

  Collections.sort(adapter.modelValues, new Comparator<Actors>() {


                @Override
                public int compare(Actors lhs, Actors rhs) {
                    Date d1 = null, d2 = null, d3 = null, d4 = null;
                    int rval = -1;
                    try {
                        SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

                        String a = lhs.getlastaction();
                        String b = rhs.getlastaction();
                        String startdat = "28-Jul-2015";
                        String enddat = "21-Aug-2015";
                        d1 = f.parse(a);
                        d2 = f.parse(b);

                        d3 = f.parse(startdat);
                        d4 = f.parse(enddat);

                        if (d1.before(d4) && (d1.after(d3))) {
                            rval = d1.compareTo(d4);
                        }


                    } catch (Exception e) {
                        Toast.makeText(getActivity().getApplicationContext(), String.valueOf(e.getMessage()), Toast.LENGTH_LONG).show();
                    }
                    return rval;

                }
            });

在排序后显示数组列表中的所有值。但我需要在两个日期(开始,结束)值之间。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

试试这段代码

private ArrayList<Actors> getNewList(ArrayList<Actors> oldList) throws java.text.ParseException {
        ArrayList<Actors> newList = new ArrayList<Actors>();
        Date d1 = null, d2 = null, d3 = null, d4 = null;  
        SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); 
        String startdat = "28-Jul-2015";
        String enddat = "21-Aug-2015";    
        d3 = f.parse(startdat);
        d4 = f.parse(enddat);   
        for (int i = 0; i < oldList.size(); i++) {

                String b = oldList.get(i).getlastaction();

                d2 = f.parse(b);

                if (d2.compareTo(d3) >= 0 && d2.compareTo(d4) <= 0) {               
                    newList.add(oldList.get(i));
                }
            }     
        return newList;
    }

答案 1 :(得分:0)

compare方法返回两个元素的比较值,使用哪个集合的元素完成。

要执行所需的操作,您可以执行以下操作。通过传递集合来创建自己的方法。然后遍历每个元素,如果日期不在您的两个日期之间,那么您可以删除(或在另一个列表中添加预期日期)。