尝试用jdk1.6强行装jdk1.8的逼-Filter

简介: 尝试用jdk1.6强行装jdk1.8的逼-Filter

定义一个断言接口,里面只有一个抽象方法。

public interface Predicate<E> {
        boolean test(E e);
}


设计一个Lsit,直接继承ArrayList

public class SuperList<E> extends ArrayList<E>{
private static final long serialVersionUID=1L;
        SuperList<E> filter(Predicate<E> p){
            for(int i=0;i< this.size();i++){
                if(!p.test(this.get(i))){
                    this.remove(i);
                    i--;
                }
            }
            return this;
        }
        @Override
        public String toString(){
            return super.toString();
        }
}


filter 方法直接返回this,方便链式调用。

测试:

SuperList<User> list=new SuperList<>();
list.add(new User("001","夏洛特",null,roleEnum.刺客.getCode()));
list.add(new User("002","阿狸",null,roleEnum.射手.getCode()));
list.add(new User("003","刘禅",null,roleEnum.坦克.getCode()));
list.add(new User("004","亚瑟",null,roleEnum.坦克.getCode()));
list.add(new User("005","秀儿",null,roleEnum.坦克.getCode()));
        SuperList<User> filter =list.filter(new Predicate<User>(){
                @Override
                public boolean test(User e){
                    return e.getRole()==roleEnum.坦克.getCode();
                }
        }).filter(new Predicate<User>(){
                @Override
                public boolean test(User e){
                    return !e.getUname().equals("秀儿");
                }
        });
System.out.println(filter);


查询出所有的坦克类型,并且名字不是秀儿的数据。

结果:

[User [uid=003, uname=刘禅, role=2], User [uid=004, uname=亚瑟, role=2]]

因为JDK1.6不支持lamda表达式,所以只能使用匿名内部类了。

相关文章
|
Ubuntu Java Linux
|
Java
JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
本文是博主学习JDK源码的记录,希望对大家有所帮助。
1941 0
JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
|
3月前
|
前端开发 Java
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
这篇文章提供了详细的JDK 1.8的安装步骤,包括下载、安装向导、环境变量配置,以及如何检查安装是否成功的方法。
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
|
5月前
|
Ubuntu Java Linux
Ubuntu20.04下载jdk遇到各种奇怪问题大集,Linux如何将默认的OpenJDK切换成自己安装的JDK版本(以JDK1.8为例),无需卸载原有OpenJDK,Some packages co
Ubuntu20.04下载jdk遇到各种奇怪问题大集,Linux如何将默认的OpenJDK切换成自己安装的JDK版本(以JDK1.8为例),无需卸载原有OpenJDK,Some packages co
|
Java CDN
Mac 下安装jdk1.7和jdk1.8并实现任意版本自动切换
Mac 下安装jdk1.7和jdk1.8并实现任意版本自动切换
706 0
|
存储 安全 算法
HashMap为什么在多线程操作下不安全(jdk1.7和jdk1.8原因不同)
HashMap为什么在多线程操作下不安全(jdk1.7和jdk1.8原因不同)
96 0
|
安全 Java
【JDK】jdk1.8下载与安装教程
【JDK】jdk1.8下载与安装教程
1533 0
|
Oracle Java 关系型数据库
eclipse 环境 JDK1.8 换成 JDk1.7【以及此错误only available on Java 1.5 and highe 】
eclipse 环境 JDK1.8 换成 JDk1.7【以及此错误only available on Java 1.5 and highe 】
160 0
eclipse 环境 JDK1.8 换成 JDk1.7【以及此错误only available on Java 1.5 and highe 】
|
存储 算法 Java
JDK1.7与JDK1.8中HashMap的扩容
JDK1.7与JDK1.8中HashMap的扩容
JDK1.7与JDK1.8中HashMap的扩容
|
Java Windows
windows下将jdk1.8切换成jdk1.6
windows下将jdk1.8切换成jdk1.6
windows下将jdk1.8切换成jdk1.6