wordpress网站关键词,wordpress 首页显示文章数量,app客户端网站建设方案,网站营销推广怎么做不可变集合 创建不可变的集合 在创建了之后集合的长度内容都不可以变化 静态集合的创建在list #xff0c;set #xff0c;map接口当中都可以获取不可变集合
方法名称说明static list of(E …elements)创建一个具有指定元素集合list集合对象staticlist of(E…elements)创…不可变集合 创建不可变的集合 在创建了之后集合的长度内容都不可以变化 静态集合的创建在list set map接口当中都可以获取不可变集合
方法名称说明static list of(E …elements)创建一个具有指定元素集合list集合对象staticlist of(E…elements)创建一个具有指定元素的set集合statick,v Mapk,v of(E…elements)创建一个具有指定元素的Map集合 这个集合是不能删除和修改 List集合
/*不能添加修改操作*/
ListString list List.of(lishi, changff, zhangshan, wangshang);list.remove(lishi);list.add(shuxili);list.set(0,bbbb);set集合注意事项信息不能重复
package ImmutableDemo;import java.util.Iterator;
import java.util.Set;public class Demo2 {public static void main(String[] args) {SetString sSet.of(lishi, changff, zhangshan, wangshang,dkjkjf);IteratorString it s.iterator();while (it.hasNext() ) {System.out.println(it.next());}System.out.println(---------------);System.out.println(---------------);
// s.remove(lishi);
// s.add(shuxili);}
}map集合注意事项键值对信息不能重复
package ImmutableDemo;import java.util.Map;
import java.util.Set;public class Demo3 {public static void main(String[] args) {MapString, String mapDeom Map.of(南京, 1000, 北京, 10000, 上海, 8000);SetString keySet mapDeom.keySet();for (String s : keySet) {System.out.println(s);System.out.println(mapDeom.get(s));}System.out.println(---------);SetMap.EntryString, String entries mapDeom.entrySet();for (Map.EntryString, String entry : entries) {String key entry.getKey();String value entry.getValue();System.out.println(key value);}}
}
Map
由于map集合的特殊还有一种方法为Map.ofEntries( )方法可以传递多个键值对 对象
package ImmutableDemo;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Demo4 {public static void main(String[] args) {HashMapString,String h new HashMap();h.put(aaa,111);h.put(bbb,222);h.put(ccc,333);h.put(ddd,444);h.put(eee,555);/*先获取键值对对像*/SetMap.EntryString, String entries h.entrySet();Map.Entry[] array entries.toArray(new Map.Entry[0]);/*先将键值对对象转化为数组0长度不会影响在底层会自动比较然后转成集合的长度*//*创建不可变集合*/Map map Map.ofEntries(array);/*可变集合底层是一个数组可以将数组直接传过去*/
// map.put(fff,777);
// map.remove(aaa);/*简写*/MapObject, Object map1 Map.ofEntries(h.entrySet().toArray(new Map.Entry[0]));}
} 总结 特点 定义完成后不可以进行增删改 如何创建不可变集合 三种方式的细节
Stream流 思想工厂流水线每个负责一项功能,结合lambda表达式来简化对数组的操作 Stream流的使用步骤 1.得到一条Stream流并添加数据 2.使用中间方法对流水线进行操作 3.使用终结方法结束对Stream的操作例如 sout 获取方法方法名说明单列集合default Stream stream()Collection 中的默认方法双列集合无无法直接使用stream流数组Public static StramStream(T[] array)Arrays工具类中的静态方法调用一堆零散数据public staticStream of(T…value)Stream接口中的静态方法 单列集合 public static void main(String[] args) {/*单列集合直接调用list是collections的实现类*/ArrayListString list new ArrayList();Collections.addAll(list,A,B,C,E,F,G);list.stream().forEach(s - System.out.println(s ));}双列集合 注意事项不能直接使用必须转化为单列结合最后keysetentery public static void main(String[] args) {HashMapString,Integer ha new HashMap();ha.put(aaa,1);ha.put(bbb,2);ha.put(ccc,3);ha.put(ddd,4);ha.put(eee,5);/*获取键值 */ha.keySet().stream().forEach(s - System.out.println(s));System.out.println();/*获取键值对 对象*/ha.entrySet().stream().forEach(stringIntegerEntry - System.out.println(stringIntegerEntry));} 数组 注意事项不能直接使用需要借助工具类arrays中的stream流 /*数组*/public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};String [] st {aaa,bbb,ccc};/*获取stream流*/Arrays.stream(arr).forEach(s- System.out.println(s));System.out.println();Arrays.stream(st).forEach(s1 - System.out.println(s1));} 零散数据 注意事项数据的类型必须一致在添加引用类型的数组是可以直接使用但是基本数据类型的数组是不能使用的会吧整个数组当成一个元素直接传递到steam流中 public static void main(String[] args) {Stream.of(1,2,3,4,5,6,7,8,9).forEach(s- System.out.println(s));}stream流中的中间方法 Filter 过滤 注意事项stream流在使用一次后就自动关闭不能在下面接着使用建议链式编程 在stream流中修改了数据原来集合里面的数据不会发生改变
ArrayListString list new ArrayList();Collections.addAll(list, aaa, bbb, ccc, ddd, eee);list.stream().filter(new PredicateString() {Overridepublic boolean test(String s) {/*true:留下 false舍弃*/return s.startsWith(a);}}).forEach(s - System.out.println(s));/*简化*/list.stream().filter(s - s.startsWith(a)).forEach(s - System.out.println(s));Limit 获取前几个元素limit(个数) /*limit获取前几元素不是索引是元素*/list.stream().limit(4).forEach(s - System.out.println(s)); skip 跳过前几个元素skip(个数) /*skip跳过前几个元素*/list.stream().skip(2).forEach(s - System.out.println(s));练习 /*练习获取其中3-4*/list.stream().limit(4).skip(2).forEach(s - System.out.println(s));System.out.println();list.stream().skip(2).limit(2).forEach(s - System.out.println(s));System.out.println( );distinct 去重复在底层是hashset去重复 /*去重复*/list1.stream().distinct().forEach(s - System.out.println(s));/*引用数据类型可以直接自定义的对象需要重写hascode和equales方法*/ Concat 流合并 **注意事项**类型一致不会提升类型不一致会提升到俩流的父类不能使用单独流的特有功能 /*流合并类型一致不会提升类型不一致会提升到俩流的父类不能使用单独流的特有功能*/Stream.concat(list1.stream().distinct(),list.stream()).forEach(s - System.out.println(s));Map 流的转换 /*流的转换*/list2.stream().map(new FunctionString, Integer() {/*string表示流里面原来就有的数据* integer表示的是要转换了之后的类型*/Overridepublic Integer apply(String s) {String[] split s.split(-);/*切割方法split*/String s1 split[1];int i Integer.parseInt(s1);/*integer中的转换方法*/return i;}}).forEach(s - System.out.println(s));System.out.println();/*简化*/list2.stream().map(s - Integer.parseInt(s.split(-)[1])).forEach(s- System.out.println(s));终结方法 遍历
/*遍历方式*/list2.stream().forEach(s - System.out.println(s));统计 /*将Stream流中的数据进行统计*/System.out.println(list2.stream().distinct().count());收集流中的数据放到数组中 String[] array list2.stream().toArray(new IntFunctionString[]() {Overridepublic String[] apply(int value) {return new String[value];}});System.out.println(Arrays.toString(array));/*简化*/String[] array1 list2.stream().toArray(value - new String[value]);System.out.println(Arrays.toString(array));收集流中的数据放到集合里面 注意事项 lis集合是不会去重复的 set集合是会去重复的 map里面的键值对不能重复 /*list*/ListString collect list2.stream().filter(s - 男.equals(s.split(-)[2])).collect(Collectors.toList());System.out.println(collect);/*set*/SetString collect1 list2.stream().filter(s - 男.equals(s.split(-)[2])).collect(Collectors.toSet());System.out.println(collect1);/*迭代器遍历*/IteratorString iterator collect.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}/*增强for*/for (String s : collect) {System.out.println(s);}/*foreach*/collect.forEach((s)- { System.out.println(s); });/*收集到map集合当中注意键值对不能重复*/MapString, Integer mapcollect list2.stream().filter(s - 男.equals(s.split(-)[2]))/*在map集合里面要传递2个数据键的获取规则值的获取规则*//*在键或者值里面有2个类型第一个表示流里面的类型第二个表示键或者值里面的类型他们是交叉对应的*/.collect(Collectors.toMap(new FunctionString, String() {Overridepublic String apply(String s) {return s.split(-)[0];}}, new FunctionString, Integer() {Overridepublic Integer apply(String s) {return Integer.parseInt(s.split(-)[1]);}}));/*简化*/MapString, Integer mapcollect2 list2.stream().filter(s - 男.equals(s.split(-)[2])).collect(Collectors.toMap(s - s.split(-)[0],s - Integer.parseInt(s.split(-)[1])));System.out.println(mapcollect2);System.out.println(mapcollect);总结