与Stream流式编程的常用操作)
一.Map集合1.含义Map集合也被叫做“键值对集合”格式{key1value1.....}Map集合的所有键是不允许重复的但值可以重复了键和值是一一对应的每一个键只能找到自己对应的值2.应用场景3.Map集合的体系4.Map集合的常用方法5.Map集合的遍历方式public class Mapdemo1 { public static void main(String[] args) { //目标认识Map集合的体系特点 //1.创建Map集合 MapString,Integer map new HashMap();//一行经典代码 map.put(张三,18); map.put(王五,19); map.put(赵六,20); System.out.println( map); //1.提起Map集合的全部键到一个Set集合中 SetString keySet map.keySet(); //2.遍历Set集合获取每一个键 for (String key : keySet) { //3.根据键获取值 Integer value map.get(key); System.out.println(key value); } } }//1.把Map集合转换成Set集合里面的元素类型都是键值对类型 SetMap.EntryString, Integer entries map.entrySet(); for (Map.EntryString, Integer entry : entries) { //2.遍历set集合获取键和值 String key entry.getKey(); Integer value entry.getValue(); System.out.println(key value); }//1.直接调用Map集合的forEach方法完成遍历 map.forEach((key,value)-{//遍历集合获取每一个键值对(使用Lambda表达式) System.out.println(key value); });6.Map集合的实现类1HashMap的底层原理2LinkedHashMap的底层原理3TreeMap的使用二.Stream流1.认识Stream流Stream是jdk8开始新增的一套APIjava.util.stream.*可以用于操作集合或者数组的数据优势Stream流大量的结合了Lambda的语法风格来编程功能强大性能高效代码简洁可读性好2.获取Stream流获取Stream流才能用流操作数据3.Stream流提供的常用方法中间方法过滤、排序、去重等等public class StreamDemo1 { public static void main(String[] args) { ListString list new ArrayList(); list.add(小王); list.add(小张); list.add(小李); //1.先用传统方案找出姓张的人名字为3个字的存入到一个新集合去 ListString newlist new ArrayList(); for (String name : list){ if (name.startsWith(小) name.length() 3){ newlist.add(name); } } System.out.println(newlist); //2.用stream流方案 ListString newlist2 list.stream()//filter作用过滤条件 .filter(name - name.startsWith(小)) .filter(name - name.length() 3) .toList(); //目标掌握Stream流提供的常见中间方法对流上的数据进行过滤得到一个新的流返回新流链式编程 //1.过滤方法 list.stream().filter(name - name.startsWith(小) name.length() 3).forEach(System.out::println); //2.排序方法 ListDouble scores new ArrayList(); scores.add(99.9); scores.add(89.9); scores.add(79.9); scores.stream().sorted().forEach(System.out::println);//默认是升序 System.out.println(-----------------); scores.stream().sorted((s1,s2) - Double.compare(s2,s1)).forEach(System.out::println);//降序 System.out.println(-----------------); scores.stream().sorted((s1,s2) - Double.compare(s2,s1)).distinct().forEach(System.out::println);//去重 //3.映射方法,将流中原来的元素拿出来变成新数据,得到一个新的流上去 list.stream().map(name - name.toUpperCase()).forEach(System.out::println); //合并流 StreamString list1 Stream.of(张三, 王五, 赵六); StreamInteger list2 Stream.of(111,222,33); StreamObject list3 Stream.concat(list1, list2); list3.forEach(System.out::println); } }4.终结方法、收集Stream流