jdk1.8 Lambda 最常见用法

import java.util.Arrays;
import java.util.List;

/**
 * 在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化
 * 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode
 * 方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容
 * 如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表
 * 无限下去,那么效率极低,碰撞是避免不了的
 * 加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生
 * 在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入
 * 除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾
 * ConcurrentHashMap (锁分段机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁分段),数组+链表中也引入了红黑树的使用
 */
public class Main {
    /**
     * Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
     *Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
     *使用 Lambda 表达式可以使代码变的更加简洁紧凑。
     * @param args
     */
    public static void main(String[] args) {
        String[] atp = {"aa", "bb", "cc", "dd","ee","ff"};
        List<String> players =  Arrays.asList(atp);
        //传统循环
        for(String s : players) {
            System.out.print( s +",");
        }
        System.out.println();

        //jdk 1.8
        players.forEach( (a) -> System.out.print( a +",") );
        System.out.println();

        players.forEach((a) -> {
            if (a.equals("ee")) {
                System.out.println(a);
            }
        });

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰河家园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值