精华内容
下载资源
问答
  • Java List过滤数据

    2020-08-26 19:41:11
    ListUtilsHook.java public interface ListUtilsHook<T>... * List过滤出符合条件的元素 * @param <T> * @param list * @param hook * @return */ public static <T&g.
    • ListUtilsHook.java
    public interface ListUtilsHook<T> {
        public boolean find(T t);
    }
    
    • ListUtils.java
    public class ListUtils {
    	
    	/**
    	 * List过滤出符合条件的元素
    	 * @param <T>
    	 * @param list
    	 * @param listUtilsHook
    	 * @return
    	 */
    	public static <T> List<T> filter(List<T> list, ListUtilsHook<T> listUtilsHook) {
            ArrayList<T> result = new ArrayList<T>();
            for (T t : list) {
                if (listUtilsHook.find(t)) {
                	result.add(t);
                }
            }
            result.trimToSize();
            return result;
        }
    }
    
    • 调用方式
    List<Entity> result = ListUtils.filter(数据源, new ListUtilsHook<Entity>(){
    				       @Override
    				        public boolean find(Entity entity) {
    				        	//eg: return entity.getId().equals("###");
    				            return 筛选条件;
    				        }
    				    });
    
    
    展开全文
  • stream流操作:list过滤

    2020-04-27 10:50:50
    list过滤;stream使用
    public static void main(String[] args) {
            //测试数据,请不要纠结数据的严谨性
            List<StudentInfo> studentList = new ArrayList<>();
            studentList.add(new StudentInfo("李小明",true,18,1.76, LocalDate.of(2001,3,23)));
            studentList.add(new StudentInfo("张小丽",false,18,1.61,LocalDate.of(2001,6,3)));
            studentList.add(new StudentInfo("王大朋",true,19,1.82,LocalDate.of(2000,3,11)));
            studentList.add(new StudentInfo("陈小跑",false,17,1.67,LocalDate.of(2002,10,18)));
    
            //查找特定学生
            List<StudentInfo> boys = studentList.stream().filter(s->s.getName().equals("李小明") || s.getName().equals("张小丽")).collect(Collectors.toList());
    
        }
    

    stream和filter使用

    展开全文
  • java list 过滤

    2019-08-05 01:35:10
    NULL 博文链接:https://houlc.iteye.com/blog/2020481
  • List去重 参考来源:blog.csdn.net/qq3434569/article/details/100520524 01、使用两个for循环去重(有序,不建议) /**使用两个for循环实现List去重(有序) * * @param list * */ public static List ...

    List去重

    参考来源:blog.csdn.net/qq3434569/article/details/100520524

    01、使用两个for循环去重(有序,不建议)

        /**使用两个for循环实现List去重(有序)
         *
         * @param list
         * */
        public static List removeDuplicationBy2For(List<Integer> list) {
            for (int i=0;i<list.size();i++)
            {
                for (int j=i+1;j<list.size();j++)
                {
                    if(list.get(i).equals(list.get(j))){
                        list.remove(j);
                    }
                }
            }
            return list;
        }
    

    02、使用List集合contains方法循环遍历(有序)

        /**使用List集合contains方法循环遍历(有序)
         *
         * @param list
         * */
        public static List removeDuplicationByContains(List<Integer> list) {
            List<Integer> newList =new ArrayList<>();
            for (int i=0;i<list.size();i++)
            {
                boolean isContains =newList.contains(list.get(i));
                if(!isContains){
                    newList.add(list.get(i));
                }
            }
            list.clear();
            list.addAll(newList);
            return list;
        }
    

    03、使用HashSet去重(无序)

        /**使用HashSet实现List去重(无序)
         *
         * @param list
         * */
        public static List removeDuplicationByHashSet(List<Integer> list) {
            HashSet set = new HashSet(list);
            //把List集合所有元素清空
            list.clear();
            //把HashSet对象添加至List集合
            list.addAll(set);
            return list;
        }
    

    04、使用LinkedHashSet去重

    LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:

    • 删除重复数据
    • 保持添加到其中的数据的顺序

    Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。

    例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedHashSet;
     
    public class ArrayListExample
     
    {
        public static void main(String[] args)
     
        {
     
            ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
     
            System.out.println(numbersList);
     
            LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
     
            ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
     
            System.out.println(listWithoutDuplicates);
     
        }
     
    }
    

    输出结果

    [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
     
    [1, 2, 3, 4, 5, 6, 7, 8]
    

    05、使用TreeSet去重(有序)

        /**使用TreeSet实现List去重(有序)
         *
         * @param list
         * */
        public static List removeDuplicationByTreeSet(List<Integer> list) {
            TreeSet set = new TreeSet(list);
            //把List集合所有元素清空
            list.clear();
            //把HashSet对象添加至List集合
            list.addAll(set);
            return list;
        }
    

    06、使用java8新特性stream去重(有序)

        /**使用java8新特性stream实现List去重(有序)
         *
         * @param list
         * */
        public static List removeDuplicationByStream(List<Integer> list) {
            List newList = list.stream().distinct().collect(Collectors.toList());
            return newList;
        }
    

    效率测试代码

        public static void main(String args[]) {
            List<Integer> list1 = new ArrayList<>();
            List<Integer> list2 = new ArrayList<>();
            List<Integer> list3 = new ArrayList<>();
            List<Integer> list4 = new ArrayList<>();
            List<Integer> list5 = new ArrayList<>();
            Random random =new Random();
            for (int i = 0; i < 100000; i++) {
                int value =random.nextInt(500);
                list1.add(value);
                list2.add(value);
                list3.add(value);
                list4.add(value);
                list5.add(value);
            }
            long startTime ;
            long endTime;
            startTime = System.currentTimeMillis();
            removeDuplicationByHashSet(list1);
            endTime = System.currentTimeMillis();
            System.out.println("使用HashSet实现List去重时间:"+(endTime-startTime)+"毫秒");
            startTime = System.currentTimeMillis();
            removeDuplicationByTreeSet(list2);
            endTime = System.currentTimeMillis();
            System.out.println("使用TreeSet实现List去重时间:"+(endTime-startTime)+"毫秒");
            startTime = System.currentTimeMillis();
            removeDuplicationByStream(list3);
            endTime = System.currentTimeMillis();
            System.out.println("使用java8新特性stream实现List去重:"+(endTime-startTime)+"毫秒");
            startTime = System.currentTimeMillis();
            removeDuplicationBy2For(list4);
            endTime = System.currentTimeMillis();
            System.out.println("使用两个for循环实现List去重:"+(endTime-startTime)+"毫秒");
            startTime = System.currentTimeMillis();
            removeDuplicationByContains(list5);
            endTime = System.currentTimeMillis();
            System.out.println("使用List集合contains方法循环遍历:"+(endTime-startTime)+"毫秒");
     
        }
    

    结果:

    • 使用HashSet实现List去重时间:40毫秒
    • 使用TreeSet实现List去重时间:36毫秒
    • 使用java8新特性stream实现List去重:78毫秒
    • 使用两个for循环实现List去重:533毫秒
    • 使用List集合contains方法循环遍历:40毫秒

    更多测试结果

    随机数在100范围内:

    • 使用HashSet实现List去重时间:32毫秒
    • 使用TreeSet实现List去重时间:40毫秒
    • 使用java8新特性stream实现List去重:128毫秒
    • 使用两个for循环实现List去重:693毫秒
    • 使用List集合contains方法循环遍历:30毫秒

    随机数在1000范围内:

    • 使用HashSet实现List去重时间:34毫秒
    • 使用TreeSet实现List去重时间:72毫秒
    • 使用java8新特性stream实现List去重:125毫秒
    • 使用两个for循环实现List去重:1063毫秒
    • 使用List集合contains方法循环遍历:85毫秒

    随机数在10000范围内:

    • 使用HashSet实现List去重时间:51毫秒
    • 使用TreeSet实现List去重时间:103毫秒
    • 使用java8新特性stream实现List去重:201毫秒
    • 使用两个for循环实现List去重:5448毫秒
    • 使用List集合contains方法循环遍历:791毫秒

    结论

    无序HashSet,有序TreeSet

    List去除null值

    1、使用系统API

    public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("3");
            list.add(null);
            list.add(null);
            list.removeAll(Collections.singleton(null));
            System.out.println("list = " + list); //输出结果为3
        }
    

    2、Stream流过滤null值

        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("3");
            list.add(null);
            list.add(null);
    //        list.removeAll(Collections.singleton(null));
            List<String> collectCode = list.stream().filter(x -> x != null).collect(Collectors.toList());
            System.out.println("collectCode = " + collectCode); //输出结果为3
        }
    
    展开全文
  • import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors;...* @Description Lambda表达式--List过滤指定元素 * @author TianJianWen * @data 2019年11月14日下午3:27:2...

    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;

    /**
     * @ClassName Demo
     * @Description Lambda表达式--List过滤指定元素
     * @author TianJianWen
     * @data 2019年11月14日下午3:27:26
     *
     */
    public interface Demo_List {

        public static void main(String[] args) {
            List<People> list = new ArrayList<>();
            list.add(new People("zs", 22));
            list.add(new People("ls", 27));
            list.add(new People("ww", 29));
            list.add(new People("zl", 21));
            // 集合遍历查找 年龄在20-25岁的人

            List<People> search = new ArrayList<>();
            // 1.传统方式
            for (People people : list) {
                if (people.getAge() >= 20 && people.getAge() <= 25){
                    search.add(people);
                }
            }

            // 2.Lambda使用
            // Stream是Java 8 提供的高效操作集合类(Collection)数据的API。
            search = list.stream().filter((People people) -> people.getAge() >= 20 && people.getAge() <= 25).collect(Collectors.toList());

            // 打印结果
            for (People people : search) {
                System.out.println(people.getName() + "-" + people.getAge());
            }
        }

    }

    class People {

        public People(String name, Integer age) {
            this.name = name;
            this.age = age;
        }

        private String name;

        private Integer age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }
    }

    展开全文
  • android list 过滤 指定list的内容

    千次阅读 2019-08-14 10:19:08
    有这样一个场景,我获取所有包名,现在要给它建立一个黑名单,黑名单里面的内容要过滤掉 /** * 从 mAllList 中去除所有 mSubList 中与之重复的元素 * @param mAllList * @param mSubList * @return */ ...
  • list过滤重复项

    2020-05-22 15:09:41
    list.GroupBy(p => p.order_sn).Select(g => g.First()).ToList();
  • List过滤重复

    2012-09-19 09:27:19
    [code="java"]public class TesFilterList { public static void main(String[] ... List list = new ArrayList(); list.add("123"); list.add("nihao"); list.add("n...
  • 在大型的网络中,路由器发布与...这时,我们需要用到distribute-list过滤路由信息。distribute-list也是通过调用access-list(访问控制列表)实现路由控制功能的。但与接口上应用access-list不同,distribute-list...
  • C# list 过滤重复的值

    千次阅读 2015-11-19 18:43:32
    快速过滤重复的Listlist list =new list(); list.Distinct().ToList();
  • Map<String, List<User>> map =userList.stream().collect(Collectors.groupingBy(User::getName));
  • qstringlist 过滤包含某子字符串的项

    千次阅读 2020-07-06 15:11:15
    qstringlist有filter的函数,可以过滤包含子字符串的所有的项目 QStringlist b; 假设b中包含了很多,“app”相关的子字符串 那么就可以通过fliter函数将所有包含“app”的字符串过滤出来 QStringlist filter...
  • p.IsManager == "1").ToList(); taskList = taskList.OrderBy(p => p.IsManager).ToList(); //删除taskList为1的用户 for (int i = 0; i < taskList.Count; i++) { if (taskList[i].IsManager == "1") ...
  • 因为今天用到了。 所以就写一下。感觉还是很实用的 但是个人感觉性能上会差很多,...所以要过滤商品ID 代码如下 theidlist = theidlist.split(',') print(theidlist) # 查询购物车 cartlist = cache.get(use...
  • jdk1.8提供了Stream 类,极大的方便了...下面就是一个通过Stream 提供的filter以及sorted对集合列表进行过滤和排序。 List<ServiceOrderingViewDTO> list1 = result.getServiceOrderingViewDTOList().stream...
  • 代码如下: ... ... import java.util.ArrayList; import java.util.Date;...import java.util.List; import java.util.stream.Collectors; public class StreamTest9 { public static void main(String[]
  • public class Demo { ... List<String> list = new ArrayList<>(); list.add("123"); list.add("456"); list.add("789"); list.add("666"); List<String> updateList = lis
  • 如果想要按照我们的要求过滤一个list中的数据,比如list中有 [1,2,3] 三个数据 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); 过滤出小于3的数据 public...
  • Java--List 过滤引发的小错误

    千次阅读 2014-07-31 00:28:00
    本来是要写一个对list里的对象过滤的简单的方法,写完之后发现总是不对啊。。。后来想了想,犯了个小错。 这里写下来提醒自己以后。。。。。 package com.lzz.list; import java.util.ArrayList; import ...
  • list过滤相同的信息

    2011-05-12 15:06:55
    List&lt;String&gt; list = new ArrayList&lt;String&gt;(); list.add("123"); list.add("nihao"); list.add("nihao"); list.add("nihao"); ...
  • 下面,给出例子中用distribute-list过滤2.2.2.0条目的配置: 在没有应用distribute-list以前,R1可以学习到去往2.2.2.0/24、2.3.3.0/24的详细子网路由。 R1#show ip route Codes: C - connected, S - static, R...
  • 两个List过滤的问题

    2014-06-24 16:27:02
    假设有 list1 和 list2 两个集合, list1 中有 name 字段, list2 也有name字段。 要得到的结果是: 如果 list1 跟 list2 中 name相等,list2 就 remove掉当前对象。 list1 和 list2 保存的都是对象, 但是两个...
  • u_list :一个用户实体类List 想要的结果:u_list 根据class、sex分组然后获取最小id的那条数据。 类似SQL:select min(id),sex,class from user group by sex,class 求大神帮解答下[/size]

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,290
精华内容 2,916
关键字:

list过滤