public int compareTo(Car o) {
if(this.getPrice() > o.getPrice()){
return 1;
}else if(this.getPrice() < o.getPrice()){
return -1;
}else{
return 0;
}
}
}
public class Test1 {
public static void main(String[] args) {
//Arrays.asList(Object…) 返回List集合
List cars = Arrays.asList(
new Car(“宝马X6”,1000000,5,2.0),
new Car(“奔驰S600”,1500000,6,3.0),
new Car(“奥迪A6”,400000,3,2.5),
new Car(“别克”,150000,8,1.8),
new Car(“丰田”,140000,2,1.0));
//排序
Collections.sort(cars);
for(Car car : cars){
car.run();
}
}
}
==========================================================================
Comparator接口提供比较的方式,可以在运行时指定排序方式
Collections.sort(List集合,Comparator比较器)
interface Comparator{
int compare(T o1, T o2);
}
按多种方式进行排序
public static void main(String[] args) {
List cars = Arrays.asList(
new Car(“宝马X6”,1000000,5,2.0),
new Car(“奔驰S600”,1500000,6,3.0),
new Car(“奥迪A6”,400000,3,2.5),
new Car(“别克”,150000,8,1.8),
new Car(“丰田”,140000,2,1.0));
Scanner input = new Scanner(System.in);
System.out.println("请输入排序方式:1、价格 2、年限 3、排量 ");
int type = input.nextInt();
switch(type){
case 1:
//用匿名内部类实现Comparator,按价格排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getPrice() > o2.getPrice()){
return 1;
}else if(o1.getPrice() < o2.getPrice()){
return -1;
}else{
return 0;
}
}
});
break;
case 2:
//按年限排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getUseYears() > o2.getUseYears()){
return 1;
}else if(o1.getUseYears() < o2.getUseYears()){
return -1;
}else{
return 0;
}
}
});
break;
case 3:
//按排量排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getGas() > o2.getGas()){
return 1;
}else if(o1.getGas() < o2.getGas()){
return -1;
}else{
return 0;
}
}
});
break;
}
for(Car car : cars){
car.run();
}
}
==================================================================
作用是对数据进行遍历,不需要考虑数据的数据结构,提供通用的遍历方式。
方法:
-
boolean hasNext() 判断数据是否还有下一个
-
T next() 向后移动,返回当前数据
实现该接口的对象,可以通过foreach循环遍历
方法:
- Iterator iterator() 返回迭代器
List接口继承Collection接口,Collection继承Iterable接口。
进行foreach循环时,会自动调用iterator(),返回迭代器对象,执行next和hasNext完成数据遍历
=======================================================================
Lambda表达式是Java1.8的重要特性,能使用非常简洁的代码,完成对接口的实现。
应用场景是:实现函数式接口(FunctionalInterface)
函数式接口通常只有一个需要实现的方法,如:Comparator
@FunctionalInterface
public interface Comparator {
int compare(T o1, T o2);
}
语法特点:
() -> 表达式 实现没有参数的方法
(参数名,参数名…) -> 表达式 实现有参数的方法,参数类型可以自动推断出来
(参数名,参数名…) -> {代码}
用Lambda实现排序
Collections.sort(cars,(o1,o2)->{
if(o1.getPrice() > o2.getPrice()){
return 1;
}else if(o1.getPrice() < o2.getPrice()){
return -1;
}else{
return 0;
}
});
List集合.forEach(Consumer接口)
Consumer 接口
void accept(T t)
示例:
cars.forEach((car) -> System.out.println(car));
cars.forEach((car) -> System.out::println));
java1.8推出的Stream接口,提供对集合操作的一系列方法
集合的筛选
Stream filter(Predicate接口)
Predicate接口
boolean test(T t)
集合的收集
collect(Collector收集器)
Collectors类
Collector toList() List类型收集器
Collector toSet() Set类型收集器
Collector toMap() Map类型收集器
集合的排序
sorted(Comparator比较器)
限制返回值个数
limit(个数)
找最大值
max(Comparator比较器)
Stream的使用
List cars = Arrays.asList(
new Car(“宝马X6”,1000000,5,2.0),
new Car(“奔驰S600”,1500000,6,3.0),
new Car(“奥迪A6”,400000,3,2.5),
new Car(“别克”,150000,8,1.8),
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Y8PtcN7g-1715727244631)]
[外链图片转存中…(img-UNQM2Lno-1715727244631)]
[外链图片转存中…(img-DgcGnpGE-1715727244632)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!