【博学谷学习记录】 超强总结,用心分享 | JavaSE笔记(五)

Lambda表达式

匿名表达式Lambda实现了函数式编程思想,面向对象思想强调“必须通过对象的形式来做事情” 函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”。

 

 有参以及有返回值的Lambda内部类使用方式

public class LambdaInterClassTest {
    public static void main(String[] args) {
        useCalculator((int a ,int b)->{
            return a+b;
        });
//     甚至还能进行极致的省略
        useCalculator((a,b)-> a+b)); //这里如果方法需要的参数只是一个值的话甚至小括号都能省略,就放一个a

        useCalculator(new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a-b;
            }
        });
    }
    public static void useCalculator(Calculator calculator){
        int result = calculator.calc(10,20);
        System.out.println(result);
    }
}

interface Calculator{
    int calc(int a ,int b);
}

Lambda表达式的省略模式

省略规则:

参数类型可以省略,但是有多个参数的情况下,不能只省略一个。

如果参数有且仅有一个,那么小括号可以省略。

如果代码块的语句只有一条,可以省略大括号和分号,甚至是return,只有省略了大括号才能同时省略return

Lambda表达式和匿名内部类的区别

 

实现原理也不同

匿名内部类,编译后产生一个单独的.class字节码文件

Lambda表达式,编译之后没有一个单独的。class字节码文件。对应的字节码会在进行的时候动态生成。

集合

集合体系结构

 

集合和数组的对比小结

 

int arr1[] = {1, 2, 3};
String arr2[] = {"a", "b", "c"};
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));

ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
System.out.println(arrayList);

ArrayList<Integer> arraylist1 = new ArrayList<>(); //这里<>里面就不能放int
arraylist1.add(1);
arraylist1.add(2);
arraylist1.add(3);
System.out.println(arraylist1);

Collection集合

它是单例集合的顶层接口,他表示一组对象,这些对象也成为Collection的元素。

JDK不提供此接口的任何实现,他提供更具体的子接口如(Set和List)实现。

床架Collection集合的对象有两种方式,多态的方式,具体的实现类ArrayList。

COllection集合的常见的方法

Collection<String> collection = new ArrayList<>();

collection.add("aaa");
collection.add("bbb");
collection.add("ccc");

boolean flag  = collection.remove("aaa"); //返回的是失败或者成功的boolean数值
System.out.println(collection);

collection.removeIf((String s)->{return s.length()==3;});//删除条件判断对的值
System.out.println(collection);

collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
collection.clear();
System.out.println(collection);

collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
boolean flag1 = collection.contains("aaa");
System.out.println(flag1);

boolean flag2 = collection.isEmpty(); //判断集合是否为空
System.out.println(flag2);

int size = collection.size();
System.out.println(size);

集合的遍历:迭代器

Collection <String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");

        Iterator<String> it = list.iterator();

//        System.out.println(it.hasNext());
//        System.out.println(it.next());
//        System.out.println(it.next());
//        System.out.println(it.next());
//        System.out.println(it.next());
//        System.out.println(it.next());
//        System.out.println(it.next());
        while(it.hasNext()){
            System.out.println(it.next());
        }

集合的遍历:增强for

只有Collection极其子类才有,双列map没有

 

ArrayList<String> arrayList = new ArrayList<>();

arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
arrayList.add("d");
arrayList.add("e");
arrayList.add("f");

for(String str : arrayList){
    System.out.println(str);
}

在增强for中修改的值不会影响到原集合

三种循环的使用场景

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值