新手小白Java学习日记
Day3今天学习了1.不可变集合调用of方法可以创建并传入多个参数例如List.of() Set.of() Map.of()其中Map中的of方法只能传递20个参数即10个键值对为解决这一问题可以用ofEntries方法其中传入的参数需要是数组结构HashMapString,String hmnew HashMap(); //...put方法传入参数 SetMap.EntryString,String entrieshm.entrySet(); Map.Entry[] arrentries.toArray(new Map.Entry[0]); Map mapMap.ofEntries(arr);这个代码是将hm里的参数传递给map集合用Map调用ofEntries方法即可实现传递多个函数。但是在此之前需要将hm中的键值对导出变为数组才能传递给方法。不过在JDK10之后copyOf()方法即可实现Map.copyOf(hm);2.Stream流顾名思义就是把不同的数据类型中的元素放到一个流水线上2.1是stream流在不同的数据类型中的用法在单列集合中直接调用stream方法ArraylistString listnew ArrayList(); Collections.addAll(list,);//这里添加元素 list.stream();//这时就可以直接调用了双列集合不能直接调用需要转化成单列集合再调用HashMapString,Integer hm new HashMap(); //用put方法添加数据... //1.可以把key拿出来调用 hm.keySet().stream(); //2.或者把键拿出来也可以 hm.entrySet().stream();数组需要用Arrays来调用stream流再把数组传进去。基本数据类型和引用数据类型都可以int[] arr1{1, 2, 3, 4}; Arrays.stream(arr1); String[] arr{a, b, c}; Arrays.stream(arr2);最后就是零散的数据直接用Stream.of()方法就可以。当然在这个方法中也可以传递数组只不过数组必须是引用数据类型的。Stream.of(1, 2, 3, 4); Stream.of(A, B, C);2.2是Stream流的中间方法filter方法用来过滤对应的元素在方法里要用匿名内部类或者lambda表达式。这个代码就是筛选字符串中开头为“张”的元素方法返回值为Boolean类型list.stream().filter(new PredicateString() { Override public boolean test(String s) { //如果返回值为true表示当前值留下 //如果返回值为false表示当前数据舍弃 return s.startsWith(张); } }).forEach(s- System.out.println(s));limit方法获取前几个元素skip方法跳过前几个元素list.stream().limit(3); list.stream().skip(2);distinct方法剔除重复的元素因为底层是HashSet,方法需要重写hashCode和equals方法concat方法需要由Stream调用用来合并两个流需要数据类型一致map方法用来转换流里的数据类型同样在方法中需要使用匿名内部类Function方法的两个参数第一个表示原本的数据类型第二个表示转换城的数据类型最后方法返回转换之后的数据。2.3Stream流的终结方法主要有三个forEach(),返回值为void方法体内采用匿名内部类或lambda表达式list.stream().forEach(new ConsumerString(){ Override public void accept(String s){ System.out.println(s); } }); //lambda表达式 list.stream().forEach(s-System.out.println(s));count()统计流中数据个数返回值为longtoArray()收集流中的数据放到数组中方法体内依旧采用匿名内部类或lambda表达式String[] arr list1.stream().toArray(new IntFunctionString[]() { //value表示流中的个数因此返回值为你规定的数据类型String的数组 Override public String[] apply(int value) { return new String[value]; } });2.4Stream流的收集方法未完待续。。。今天脑子不够用了