5月8日-5月14日

Java学习笔记

5月8日 Java下 P34-

不可变集合

不可变集合:不可以被修改的集合(长度和内容)
创建不可变集合的应用场景:某个数据不能被修改 集合对象被不可信的库调用时,不可变形式是安全的 (简单理解:不想让别人修改集合中的内容)例如:斗地主中的牌盒的数量 斗地主中出牌的规则 电脑中的硬件信息
创建不可变集合的书写格式:
在List,Set,Map接口中,都存在静态的of方法,可以获取一个不可变的集合.

方法名称说明
static List of(E…elements)创建一个具有指定元素的List集合对象
static Set of(E…elements)创建一个具有指定元素的Set集合对象
static<K,V> Map<K,V> of(E…elements)创建一个具有指定元素的Map集合对象
这个集合不能添加,删除,修改
package Day1.List;

import java.util.Iterator;
import java.util.List;

public class demo1 {
    public static void main(String[] args) {
        List<String> list = List.of("你好", "张三","李四","王五");
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));

        System.out.println("================================");

        for (String s : list) {
            System.out.println(s);
        }

        System.out.println("================================");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        System.out.println("================================");
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }

    }
}
//list.remove("张三")
//list.add("世界")
//list.set(0,"aaa")
package Day1.List;

import java.util.Iterator;
import java.util.Set;

public class demo2 {
    public static void main(String[] args) {
        Set<String> set = Set.of("你好", "李四", "王五", "赵六", "世界");
        for (String s : set) {
            System.out.println(s);
        }
        System.out.println("--------------------------------");
        Iterator<String> it = set.iterator();
        while(it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }
    }
}

set方法时:需要保证一个不可变的Set集合中的唯一性
创建Map的不可变集合的小细节:键是不能重复的 Map的of方法,参数是有上限的,最多只能传递20个参数,10个键值对 传递多个键值对方法可以在Map接口中使用ofEmtries() (toArray方法在底层会比较集合的长度跟数组的长度两者的大小 如果集合的长度大于数组的长度:数据在数组中放不下,此时会根据实际数据的个数,重新创建数组 如果集合的长度小于等于数组的长度,此时不会创建新的数组,而是直接用)

Stream流

package Day1.List;

import java.util.ArrayList;

public class demo3_stream {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<String>();
        list1.add("张三丰");
        list1.add("张无忌");
        list1.add("张强");
        list1.add("王五");
        list1.add("周校");

        list1.stream().filter(name ->name.startsWith("张")).filter(name ->name.length() == 3).forEach(name ->System.out.println(name));

        ArrayList<String> list2 = new ArrayList<String>();
        for (String name : list1) {
            if (name.startsWith("张")){
                list2.add(name);
            }
        }
        
        ArrayList<String> list3 = new ArrayList<String>();
        for (String name : list3) {
            if(name.length() == 3){
                list3.add(name);
            }
        }
    }
}

Stream流的思想::过滤后输出
Stream流的作用:结合了Lambda表达式,简化集合,数组的操作
Stream流的使用步骤:
①先得到一条Stream流,并将数据放上去
|获取方式|方法名|说明|
|–|–|
|单列集合|default Stream stream()|Collection中的默认方法|
|双列集合|无|无法直接使用stream流 使用KeySet() entrySet()进行转化|
|数组|public staticStreamstream(T[] array)|Arrays工具类中的静态方法|
|一堆零散数据|public static Stream of(T…values)|Stream接口中的静态方法|

package Day1.List;

import java.util.ArrayList;
import java.util.Collections;

public class demo4_stream2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        Collections.addAll(list,"a","b","c","d","e","f","g","h","i","j");
        list.stream().forEach(s -> System.out.println(s));
    }
}

②利用Stream流中的API进行各种操作(中间方法:过滤,转换 终结方法:统计,打印)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值