• Why use interface type to declare a collectio


    The following program prints out all distinct words in its argument list. Two versions of this program are provided. The first uses JDK 8 aggregate operations. The second uses the for-each construct.

    Using JDK 8 Aggregate Operations:

    import java.util.*;
    import java.util.stream.*;

    public class FindDups {
    public static void main(String[] args) {
    Set<String> distinctWords = Arrays.asList(args).stream()
    .collect(Collectors.toSet());
    System.out.println(distinctWords.size()+
    " distinct words: " +
    distinctWords);
    }
    }
    Using the for-each Construct:

    import java.util.*;

    public class FindDups {
    public static void main(String[] args) {
    Set<String> s = new HashSet<String>();
    for (String a : args)
    s.add(a);
    System.out.println(s.size() + " distinct words: " + s);
    }
    }

    Now run either version of the program.

    java FindDups i came i saw i left
    The following output is produced:

    4 distinct words: [left, came, saw, i]
    Note that the code always refers to the Collection by its interface type (Set) rather than by its implementation type. This is a strongly recommended programming practice because it gives you the flexibility to change implementations merely by changing the constructor. If either of the variables used to store a collection or the parameters used to pass it around are declared to be of the Collection's implementation type rather than its interface type, all such variables and parameters must be changed in order to change its implementation type.

    Furthermore, there's no guarantee that the resulting program will work. If the program uses any nonstandard operations present in the original implementation type but not in the new one, the program will fail. Referring to collections only by their interface prevents you from using any nonstandard operations.

  • 相关阅读:
    Powershell增加ADB命令
    电脑通过ADB截图脚本
    常用Website List
    护眼豆绿色背景RGB
    xshell方便设置
    解决 Xshell6|Xftp6 强制升级
    beyond compare 4.2.9桌面右键集成的问题修复
    Ubuntu中Samba的安装配置和使用
    excel设置保护工作区域
    【转载】学习 Qt 编程的好书推荐
  • 原文地址:https://www.cnblogs.com/glf2046/p/4885411.html
Copyright © 2020-2023  润新知