精华内容
下载资源
问答
  • java中list去除空值 介绍: 在本文中,我们将学习如何使用普通的JavaJava 8 lambda表达式和某些第三方库从Java 列表中... 当使用Java 7或更低版​​本时,我们可以使用以下结构从列表中删除所有空值 : Java ...

    java中list去除空值

    介绍:

    在本文中,我们将学习如何使用普通的Java,Java 8 lambda表达式和某些第三方库从Java 列表中删除空值

    所以,让我们开始吧!

    从Java中的

    让我们探索从Java 列表中删除null的不同方法:

    1. Java 7或更低版​​本:

    当使用Java 7或更低版​​本时,我们可以使用以下结构从列表中删除所有空值

    Java

    @Test
    public removeAllNullsFromListWithJava7OrLower() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        list.removeAll(Collections.singleton(null));
     
        assertThat(list, hasSize(2));
    }

    请注意,我们在此处创建了一个可变列表。 尝试从不可变列表中删除null将抛出java.lang.UnsupportedOperationException

    2. Java 8或更高版本:

    从Java 8或更高版本的Java 列表中删除空值的方法非常直观且优雅:

    @Test
    public removeAllNullsFromListWithJava8() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        list.removeIf(Objects::isNull);
     
        assertThat(list, hasSize(2));
    }

    我们可以简单地使用removeIf()构造来删除所有值。

    如果我们不想更改现有列表,而是返回一个包含所有非空值的新列表,则可以:

    Java

    @Test
    public removeAllNullsFromListWithJava8() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        List<String> newList = list.stream().filter(Objects::nonNull)
          .collect(Collectors.toList());
     
        assertThat(list, hasSize(4));
        assertThat(newList, hasSize(2));
    }

    我们可以在此处了解有关Java 8流收集器的更多信息

    3. Apache Commons:

    Apache Commons CollectionUtils类提供了一个filter(Iterable,Predicate)方法,该方法也可以解决我们的目的。 传入的谓词将应用于列表中的所有元素:

    Java

    @Test
    public removeAllNullsFromListWithApacheCommons() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        CollectionUtils.filter(list, PredicateUtils.notNullPredicate());
     
        assertThat(list, hasSize(2));
    }

    从而,从现有列表中过滤掉所有空值

    4. Google Guava:

    Guava中的Iterables类提供了removeIf(Iterable,Predicate)方法,以帮助我们根据给定的谓词过滤值。 让我们看看如何利用它来发挥我们的优势:

    Java

    @Test
    public removeAllNullsFromListUsingGuava() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        Iterables.removeIf(list, Predicates.isNull());
     
        assertThat(list, hasSize(2));
    }

    另外,如果我们不想修改现有列表,Guava允许我们创建一个新的过滤列表:

    Java

    @Test
    public removeAllNullsFromListUsingGuava() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        List<String> newList = new ArrayList<>(
          Iterables.filter(list, Predicates.notNull()));
     
        assertThat(list, hasSize(4));
        assertThat(newList, hasSize(2));
    }

    Java

    @Test
    public removeAllNullsFromList() {
     
        List<String> list =
          new ArrayList<>(Arrays.asList("A", null, "B", null));
     
        List<String> newList = new ArrayList<>(
          Iterables.filter(list, Predicates.notNull()));
     
        assertThat(list, hasSize(4));
        assertThat(newList, hasSize(2));
    }

    结论:

    在本快速教程中,我们探索了多种方法可以从Java 列表中删除所有空值

    成为第一个发表评论的人。

    翻译自: https://www.javacodegeeks.com/2019/03/java-remove-nulls-from-list.html

    java中list去除空值

    展开全文
  • java删除list中所有null值

    万次阅读 2018-04-01 21:52:58
    java删除list中所有null值 本文介绍如何删除list中所有null值,分别通过普通java方式,Guava,Apache Commons Collections以及java8 lambda表达式方式实现。 普通java方式 java Collection 框架提供简单解决...

    java删除list中所有null值

    本文介绍如何删除list中所有null值,分别通过普通java方式,Guava,Apache Commons Collections以及java8 lambda表达式方式实现。

    普通java方式

    java Collection 框架提供简单解决方案,通过基本的while循环实现:

    @Test
    public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, null);
        while (list.remove(null));
    
        assertThat(list, hasSize(1));
    }

    remove方法当参数为null时,背后也是for循环,删除null 返回true,继续外层循环,直至全部null被删除。当然我们也可以使用removeAll方法:

    @Test
    public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, null);
        list.removeAll(Collections.singleton(null));
    
        assertThat(list, hasSize(1));
    }

    需要指出的是这两种方式都影响原list。

    Guava方式

    也可以通过Google Guava提供更实用的方法,使用predicte:

    @Test
    public void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, null);
        Iterables.removeIf(list, Predicates.isNull());
    
        assertThat(list, hasSize(1));
    }

    另外,如果我们不想修改原list,可以创建一个新list:

    @Test
    public void givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, null, 2, 3);
        List<Integer> listWithoutNulls = Lists.newArrayList(
          Iterables.filter(list, Predicates.notNull()));
    
        assertThat(listWithoutNulls, hasSize(3));
    }

    Apache Commons Collections方式

    Apache Commons Collections提供了简单的方式实现,使用类似函数式编程方式:

    @Test
    public void givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, 2, null, 3, null);
        CollectionUtils.filter(list, PredicateUtils.notNullPredicate());
    
        assertThat(list, hasSize(3));
    }

    这种方式也修改原list。

    Java 8 Lambdas 方式

    最后,我们看看java 8 lambda表达式解决方案,过滤list,且过滤过程可以是并行或串行:

    @Test
    public void givenListContainsNulls_whenFilteringParallel_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, 2, null, 3, null);
        List<Integer> listWithoutNulls = list.parallelStream()
          .filter(Objects::nonNull)
          .collect(Collectors.toList());
    }
    
    @Test
    public void givenListContainsNulls_whenFilteringSerial_thenCorrect() {
        List<Integer> list = Lists.newArrayList(null, 1, 2, null, 3, null);
        List<Integer> listWithoutNulls = list.stream()
          .filter(Objects::nonNull)
          .collect(Collectors.toList());
    }
    
    public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect() {
        List<Integer> listWithoutNulls = Lists.newArrayList(null, 1, 2, null, 3, null);
        listWithoutNulls.removeIf(Objects::isNull);
    
        assertThat(listWithoutNulls, hasSize(3));
    }

    好了,java8 提供的方式灵活好用。

    总结

    我们展示不同的方式去删除list中null值,快速且有用的解决方案,希望你喜欢。

    展开全文
  • java删除List中所有重复元素

    千次阅读 2018-04-01 11:44:16
    java删除List中所有重复元素 本文介绍如何删除List中重复元素,分别介绍普通的java方式、Guava以及java8 Lambda表达式方式。 普通java方式 使用标准java集合框架的Set删除List中的重复元素: public void ...

    java删除List中所有重复元素

    本文介绍如何删除List中重复元素,分别介绍普通的java方式、Guava以及java8 Lambda表达式方式。

    普通java方式

    使用标准java集合框架的Set删除List中的重复元素:

    public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() {
        List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
        List<Integer> listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));
    
        assertThat(listWithoutDuplicates, hasSize(4));
    }

    上面代码可以看到,原来list保持不变。

    使用Guava方式

    Guava提供几乎相同的方式:

    public void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() {
        List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
        List<Integer> listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));
    
        assertThat(listWithoutDuplicates, hasSize(4));
    }

    同样,原list保持不变。

    java8 Lambda表达式

    最后,我们看看java8 lambda表达式实现方案;我们知道Stream Api提供了distinct()方法,其返回不重复元素组成的stream。

    public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() {
        List<Integer> listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3);
        List<Integer> listWithoutDuplicates = listWithDuplicates.stream()
         .distinct()
         .collect(Collectors.toList());
    }

    如你所见,我们有三种方式实现删除list中重复元素。

    总结

    本文介绍了三种方式删除list中重复元素,你喜欢那种呢?

    展开全文
  • 删除Java代码中的所有注释

    千次阅读 2017-09-11 17:31:34
    文章来源:...import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.
    文章来源:http://blog.csdn.net/fullstack/article/details/22688777
    package tools;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;

    /**
    * 删除Java代码中的注释
    *
    * @author Alive
    * @build 2010-12-23
    */
    public class DeleteComments {

    private static int count = 0;

    /**
    * 删除文件中的各种注释,包含//、/* * /等
    * @param charset 文件编码
    * @param file 文件
    */
    public static void clearComment(File file, String charset) {
    try {
    //递归处理文件夹
    if (!file.exists()) {
    return;
    }

    if (file.isDirectory()) {
    File[] files = file.listFiles();
    for (File f : files) {
    clearComment(f, charset); //递归调用
    }
    return;
    } else if (!file.getName().endsWith(".java")) {
    //非java文件直接返回
    return;
    }
    System.out.println("-----开始处理文件:" + file.getAbsolutePath());

    //根据对应的编码格式读取
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset));
    StringBuffer content = new StringBuffer();
    String tmp = null;
    while ((tmp = reader.readLine()) != null) {
    content.append(tmp);
    content.append("\n");
    }
    String target = content.toString();
    //String s = target.replaceAll("\\/\\/[^\\n]*|\\/\\*([^\\*^\\/]*|[\\*^\\/*]*|[^\\**\\/]*)*\\*\\/", ""); //本段正则摘自网上,有一种情况无法满足(/* ...**/),略作修改
    String s = target.replaceAll("\\/\\/[^\\n]*|\\/\\*([^\\*^\\/]*|[\\*^\\/*]*|[^\\**\\/]*)*\\*+\\/", "");
    //System.out.println(s);
    //使用对应的编码格式输出
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), charset));
    out.write(s);
    out.flush();
    out.close();
    count++;
    System.out.println("-----文件处理完成---" + count);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public static void clearComment(String filePath, String charset) {
    clearComment(new File(filePath), charset);
    }

    public static void clearComment(String filePath) {
    clearComment(new File(filePath), "UTF-8");
    }

    public static void clearComment(File file) {
    clearComment(file, "UTF-8");
    }

    public static void main(String[] args) {
    clearComment("D:\\eclipse3.3\\workspace\\Sanguosha"); //删除目录下所有java文件注释
    //删除某个具体文件的注释
    //clearComment("D:\\proj\\scm\\action\\AbcdefgAction.java");
    }

    }
    展开全文
  • java删除文件夹下所有文件

    千次阅读 2017-09-23 09:51:51
    /** * 删除文件夹里面的所有文件 * * @param path String 文件夹路径 如 c:/fqf */ public static void delAllFile(String path) { File file = new File(path); if (!file.exists()) {
  • 转载:http://www.cnblogs.com/eczhou/archive/2012/01/16/2323431.html功能:删除...所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下:import java.io.File;public class DeleteDire
  • DeleteFolderDemo.java import java.io.File; import java.io.IOException;public class DeleteFolderDemo { public static void main(String[] args) { if (deletePath("000017PINC0000000962", "2017-10
  • Java编程:删除 List 元素的三种正确方法

    万次阅读 多人点赞 2016-11-30 16:44:59
    删除 List 中的元素会产生两个问题: 删除元素后 List 的元素数量会发生变化; 对 List 进行删除操作可能会产生并发问题; 我们通过代码示例演示正确的删除逻辑package com.ips.list;import java.util.ArrayList;...
  • 很基础的一篇文章,获取一个目录下文件的大小 一开始看File类的方法file.getTotalSpace...file.getFreeSpace()//获取当前file所在分区的剩余大小,单位是字节  这几个方法并不能获取file下所有文件的大小,只能获取f
  • shell脚本删除指定java进程

    千次阅读 2016-12-18 13:24:39
    如果只想查看含有指定字段的进程id 而不想得到其他信息,可以使用pgrep 来获取 ...使用shell脚本 删除指定的java进程 而不是简单粗暴地 kill all java 利用 ps命令找到指定的java进程pid 然后删除
  • java删除文件目录及文件Today we will look into Java delete file and java delete directory examples. Earlier we learned how to create a file in java. 今天,我们将研究Java删除文件和Java删除目录示例。 ...
  • java 删除文件

    千次阅读 2018-12-18 10:43:24
    java 删除文件夹 / 删除某文件夹下的所有文件 import java.io.File; /*************************删除文件夹delFolder / 删除文件夹中的所有文件delAllFile *start***********/ /** * 删除文件夹 * @param...
  • java删除文件夹下的所有文件

    千次阅读 2017-06-14 21:58:06
    如何删除文件夹下的所有文件,就自己写了一下代码。
  • java删除文件夹及下面的所有文件

    千次阅读 2019-08-07 14:48:26
    java中一般通过file里面的delete()方法来删除文件,但是如果是用来删除文件夹的话 却会不起作用。下面来记录一下删除文件夹的方法 这里的folderPath是文件夹的路径 //删除文件夹 public static void delFolder...
  • Java递归删除空文件夹

    万次阅读 2018-07-04 16:11:54
    import java.io.File; public class ClearFile { static int iFile = 0; public static void main(String[] args) { // TODO Auto-generated method stub // dir_str清理文件夹的路径 String dir_s...
  • Java强制删除java程序占用的文件

    万次阅读 2016-12-28 20:21:23
    Java强制删除java程序占用的文件在JAVA对文件的读写操作中,操作完以后将输入流和输出流及时关闭时很必要的。假如我们有时候忘记关闭了,又不知道在哪个地方去关闭,为了删除该文件,JAVA可以进行强制删除操作。可以...
  • Java 删除一个文件夹下面的所有文件

    万次阅读 多人点赞 2013-06-26 09:50:30
    删除一个文件夹下面的所有文件,一种调用递归算法,一种调用windows命令,下面是程序代码 import java.io.File; public class FileDemo { /** * 通过调用系统命令删除一个文件夹及下面的所有文件 * @...
  • 写一个小程序定时删除一个文件夹里面的所有内容; package executorpool; import java.io.File; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util...
  • /* * 删除指定文件夹下所有文件 * * @param path 文件夹完整绝对路径 * @return */ public static boolean delAllFile(String path) { boolean flag = false; File file = new...
  • import java.io.File; import java.io.FilenameFilter; /** * @author 万星明 ...编写一个递归删除方法,传入文件夹,删除该文件夹和下面的所有子文件 */ public class Test4 { public static void main...
  • * 删除某个目录下所有文件及文件夹 * @param rootFilePath 根目录 * @return boolean */ private boolean deleteAllByPath(File rootFilePath) { File[] needToDeleteFiles = rootFilePat...
  • java 文件删除

    千次阅读 2014-01-13 09:21:25
    import java.io.File;public class Test{ public static void main(String args[]){ Test t = new Test(); delFolder("E://test"); System.out.println("deleted");}//删除文件夹//param folderPath 文件夹完整绝对...
  • 主要是使用FileUtils.forceDelete(File file)工具类来删除目录下所有东西: DeleteFolderDemo.java import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class ...
  • Java中的File文件类提供删除方法,但是当我们需要删除的文件夹存在子文件夹时是无法删除的,这里利用递归来写一个简单的方法进行删除文件夹! 新建文件夹,供我们进行测试: public class FileTest { public ...
  • java数组删除数组元素When we create an array in Java, we specify its data type and size. This is used by JVM to allocates the necessary memory for array elements. There are no specific methods to ...
  • Java(2)-Java IO输入输出流

    万次阅读 多人点赞 2012-04-01 11:28:55
    Java中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的...
  • Java 删除文件夹及文件夹里所有内容

    千次阅读 2019-01-18 11:10:53
    /*** * 删除文件夹 * * @param folderPath文件夹完整绝对路径 */ public static void delFolder(String folderPath) { try { delAllFile(folderPath); // 删除完里面所有内容 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 871,895
精华内容 348,758
关键字:

如何删除所有的java

java 订阅