集合补充和Stream流与File类

集合补充和Stream流与File类_第1张图片

集合补充

可变参数

概述:

可变参数本质上是一个数组, 他书写在方法的形参上, 让调用者传递实参时, 可以传递任意多个数据.

格式:

	 public 返回值类型 方法名(数据类型... 变量名){}

注意:

  1. ​ 可变参数必须放在参数的最后.
  2. ​ 可变参数只能有一个.
  3. ​ 可变参数本质上是一个数组.

快速创建集合

创建集合

//JDK8之前->只能生成List集合,并且集合元素不允许"增删"
List<类型> list = Arrays.asList(元素1,元素2,元素3...);

//JDK9之后->能创建List和set集合,但集合元素不允许"增删改"
List<类型> list = List.of(元素1,元素2,元素3...);
Set<类型> set = Set.of(元素1,元素2,元素3...);

转换集合

//因为快速创建的集合,不允许增删改,所以需要通过构造方法转换一次
List<类型> list = new ArrayList<>(原集合);
Set<类型> Set = new HashSet<>(原集合);

Stream流

概述:

Stream流就是一个流水线,主要用于"快速操作集合和数组".

获取:

	Stream<元素类型> s = 集合.stream();			//获取Collection集合的Stream流
    Stream<元素类型> s = 集合.keySet().stream();	//获取Map集合中键的Stream流
    Stream<元素类型> s = 集合.values().stream();	//获取Map集合中值的Stream流
    Stream<元素类型> s = 集合.entrySet().stream();//获取Map集合中键值对的Stream流
    Stream<元素类型> s = Stream.of(数组);			//获取数组的Stream流
    Stream<元素类型> s = Stream.of(元素1,元素2,...);//获取多个零散元素的Stream流

注意:

  1. ​ Stream流的操作不能改变源数据.
  2. ​ Stream流只能操作一次.

操作:

	public Stream<T> filter(Predicate predicate)	//用于对流中的数据进行过滤                                   
    public Stream<T> limit(long maxSize)	//截取前指定参数个数的数据         
    public Stream<T> skip(long n)	//跳过指定参数个数的数据,       
    public static Stream<T> concat(Stream a, Stream b)	//合并a和b两个流为一个流
    public Stream<T> distinct()	//去除重复(根据hashcode和equals方法去除重复)
	public void forEach(Consumer action)	//对此流的每个元素执行操作
    public long count()	//获取次流中的元素的个数
    public Strean<R> map(Function mapper)	//把当前Stream流转换为"其他类型的Stream流"

转换:

	List list = Stream.collect(Collectors.toList());	//把Stream流转换为List集合
	Set set = Stream.collect(Collectors.toSet());		//把Stream流转换为List集合

File类

概念:

​ 在Java中用来表示"文件或文件夹"的类.
​ File封装的文件或文件夹,也可以是不存在的路径

构造:

	public File(String pathname) 			//根据"路径名字符串"创建File
    public File(String parent, String child)//根据"父路径名字符串"和"子路径名字符串"创建File
	public File(File parent, String child) 	//根据"父路径名File"和"子路径名字符串"创建File      

创建功能

    public boolean createNewFile();//创建空文件
    public boolean mkdir();		//创建单级文件夹 
    public boolean mkdirs();	//创建多级文件夹

删除功能

	public boolean delete() 	//删除当前路径代表的文件或文件夹. 注意,当文件夹不为空时,不能删除文件夹
    public void deleteOnExit() 	//当虚拟机终止时删除此文件或文件夹。  

判断功能

    public boolean isDirectory()//判断是否为目录。 
	public boolean isFile() 	//判断是否为普通文件。
    public boolean exists() 	//判断是否存在。  

获取功能

    public String getAbsolutePath()    //获取绝对路径
    public String getParent()    //获取父级路径
    public String getName()     //获取文件或文件夹的名字

高级获取

    public File[] listFiles()    //获取当前文件夹中的所有文件和文件夹
    public static File[] listRoots()    //获取硬盘上的所有盘符

相关概念:

绝对路径:

永远不发生变化的路径. 绝对路径一般是由盘符作为开始. 例如: D://aaaa//b.txt

相对路径:

根据参照物对比出来的路径. 相对路径不是以盘符作为开始. a.txt

注意事项:

  1. ​ Java项目中的相对路径参照物都是"当前项目".
  2. ​ Java项目任何书写路径的地方,都可以书写"绝对路径",也可以书写"相对路径".

你可能感兴趣的:(java,servlet,jvm)