• 用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法


    直接上代码

    Blog.Java

    public class Blog {
            public Blog(int id,String name)
            {
                Id=id;
                Name=name;
            }
            public int Id;
            public String Name;
            
        }

    util.java

    import java.util.ArrayList;
    import java.util.List;
    
    public final class util<T> {
    
        public static <T> void Each(List<T> list, Action<T> action) {
    
            for (T item : list) {
                action.invoke(item);
            }
        }
    
        public static <T> T Last(List<T> list, Func<T> func) {
    
            for (int i = list.size() - 1; i > -1; i--) {
                if (func.invoke(list.get(i))) {
                    return list.get(i);
                }
            }
            return null;
        }
    
        public static <T> T First(List<T> list, Func<T> func) {
    
            for (T item : list) {
                if (func.invoke(item)) {
                    return item;
                }
            }
            return null;
        }
    
        public static <T> List<T> Where(List<T> list, Func<T> func) {
    
            List<T> tempList = new ArrayList<T>();
            for (T item : list) {
                if (func.invoke(item)) {
                    tempList.add(item);
                }
            }
            return tempList;
        }
    
        public interface Func<T> {
            public boolean invoke(T o);
        }
    
        public interface Action<T> {
            public void invoke(T o);
        }
    }

    测试代码

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class progrmas {
    
        public static void main(String[] args) {
    
            List<Blog> list = new ArrayList<Blog>();
            list.add(new Blog(1, "blog 1"));
            list.add(new Blog(2, "blog 2"));
            list.add(new Blog(3, "blog 2"));
            list.add(new Blog(4, "blog 4"));
            List<Blog> result = new ArrayList<Blog>();
            final int id = 1;
            // 查询
            List<Blog> result2 = util.Where(list, new util.Func<Blog>() {
                @Override
                public boolean invoke(Blog blog) {
                    return blog.Name.contains("2");
                }
            });
            //Java 8支持Lambda时,使用会相当简洁
            // List<Blog> result2 = util.Where(list,(b)->b.Name.contains("2"));
            
            // 打印结果
            util.Each(result2, new util.Action<Blog>() {
                @Override
                public void invoke(Blog o) {
                    System.out.print(String.valueOf(o.Id) + "------" + o.Name);
                }
            });
            //Java 8支持Lambda时,使用会相当简洁
            // util.Each(result2,(b)->System.out.println(String.valueOf(b.Id) +"------" + b.Name));
        }
    }
  • 相关阅读:
    搭建NLP相关的python环境
    win10 系统更新后系统第三方软件无法切换微软拼音输入中文
    NLP文本清理时常用的python小函数
    python 复制
    #论文阅读# Universial language model fine-tuning for text classification
    conda 里的 jupyter
    #论文阅读#attention is all you need
    关于多类别分类任务
    大白话AOP
    搭建JavaEE项目是遇到的几个问题
  • 原文地址:https://www.cnblogs.com/piaolingzxh/p/4118967.html
Copyright © 2020-2023  润新知