这是我的数组列表
ArrayList<Courses> list = new ArrayList<Courses>();
list.add( new Courses(350,5/20/2020) );
list.add( new Courses(350,4/20/2019 );
list.add( new Courses(350,3/20/2018) );
list.add( new Courses(360,6/20/2020) );
list.add( new Courses(360,5/20/2019) );
list.add( new Courses(370,5/20/2020) );
list.add( new Courses(370,5/19/2018) );
list.add( new Courses(360,4/10/2016) );
public class Courses{
int coursenum;
Date date;
}
如何删除元素以便arraylist只包含那些最新日期的元素?
我应该喜欢这个;
350, 5/20/2020}
360,6/20/2020}
370, 5/20/2020
4条答案
按热度按时间c6ubokkw1#
我附上我的代码作为你的要求的想法。你可以玩玩它。
bgibtngc2#
我建议使用java-8中的localdate,因为date是旧版本
然后你可以用
removeIf
```list.removeIf(d->d.isBefore(LocalDate.now());
4dbbbstv3#
Java1.7和java.time通过threeten backport
此代码段的输出是:
我在jdk1.7.0\u67上运行。我已经添加了310个backport 1.3.6。请参见下面的链接。
这是你的名字
Course
i类使用:如果你坚持使用
java.util.Date
-一个设计拙劣、过时已久的类-(1)我不明白您为什么要这样做,(2)您可以修改我的代码以使用它Date
相反。流版本
您可能需要考虑升级java版本。java15已经发布,java16的早期access版本已经发布。Java8中已经出现了流。它们将允许您以更少的代码行获得相同的结果:
从代码的立场来看,它在结果列表中没有给出相同的课程顺序,它需要Java10(覆盖的no arg)
orElseThrow
介绍了该方法。即使您需要相同的顺序,streams仍然非常有用。问:这在Java1.7上能用吗?
java.time在较旧和较新的android设备上都能很好地工作。它至少需要Java6。
在Java8和更高版本以及更新的android设备上(api级别26),现代api是内置的。
在非android的java6和java7中获得了三个十的backport,即现代类的backport(三个十用于jsr310;请参见底部的链接)。
在旧的android上,要么使用desugaring,要么使用android版本的threeten backport。它叫3TENABP。在后一种情况下,请确保从导入日期和时间类
org.threeten.bp
有分装的。链接
oracle教程:date time解释如何使用java.time。
java规范请求(jsr)310,其中
java.time
第一次被描述。三十后港工程
java.time
到Java6和Java7(jsr-310为310)。通过desugaring提供Java8+API
threetenabp,android版threeten backport
问:如何在android项目中使用threetenabp,有非常透彻的解释。
wnrlj8wa4#
定义关键日期并删除日期早于关键日期的所有课程。如果您有合适的getter:
亲爱的@randy casburn写了一个最小但完整的例子,我不想对感兴趣的读者隐瞒: