一直都知道lambda是java8的特性但是一直都没有用过
看了好多的博客确实没有看出来啥东西,也许是我笨,然后我总结了一下博客的内容总结出我能够使用的lambda的情况。
lambda用法
一些很基本的用法我就不说了
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3,4,5);
list.forEach(element -> {
if (element % 2 == 0) {
System.out.println(element);
}
});
System.out.println(list.toString());
}
遍历元素,element 每一个元素直接遍历,这种主要是用于不需要展示第几个的那种,单纯的为了遍历而遍历,可能有人会问,啥叫为了遍历而遍历,比如说有一些关键的数据遍历的时候需要去try catch 还需要知道这是第几个出的问题,就不适用这个功能,但是只是单纯的遍历就没有这个问题。
当然不仅仅是可以遍历还可以进行用于排序
public class Test2 {
public static void main(String[] args) {
ArrayList<Item> list = new ArrayList<>();
list.add(new Item(13, "背心", 7.80));
list.add(new Item(11, "半袖", 37.80));
list.add(new Item(14, "风衣", 139.80));
list.add(new Item(12, "秋裤", 55.33));
list.sort(new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
return o1.getId() - o2.getId();
}
});
System.out.println(list.toString());
}
}
item类
package Test20210727;
public class Item {
int id;
String b;
double c;
public Item(int id, String b, double c) {
this.id = id;
this.b = b;
this.c = c;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
@Override
public String toString() {
return "Item{" +
"id=" + id +
", b='" + b + '\'' +
", c=" + c +
'}';
}
}
其实内容也没有东西,就是一个实体类,还有就是我们实现排序方法的基本方法就是写一个比较类继承Comparator接口或者继承比较类,或者是使用具体的属性,我记得是方法有三种,具体的这个很简单就不在之类介绍了。
这里就体现了lambda的好处,匿名内部类直接写,直接可以变成
public class Test2 {
public static void main(String[] args) {
ArrayList<Item> list = new ArrayList<>();
list.add(new Item(13, "背心", 7.80));
list.add(new Item(11, "半袖", 37.80));
list.add(new Item(14, "风衣", 139.80));
list.add(new Item(12, "秋裤", 55.33));
list.sort((o1, o2) -> o1.getId() - o2.getId());
System.out.println(list.toString());
}
}
这两个效果是相等的,可以直接代替。
其实lambda的用法我感觉好用的就是在这两个一个集合的遍历,一个是匿名内部类的处理,其他的我暂时没有用到或者没有想到使用的环境