(1) 가변 매개변수:
1. 특징:
- 가변 매개변수는 형식 매개변수에서 여러 데이터를 수신하는 데 사용됩니다.
- 변수 매개변수의 형식: 데이터 유형...매개변수 이름;
2. 기능:
- 전송 매개변수는 유연하고 편리합니다. 매개변수를 전달하지 않고 하나 이상 전달할 수 있으며 배열을 전달할 수 있습니다.
- 가변 매개변수는 기본적으로 메소드 내부의 배열입니다.
3. 주의 사항:
- 공식 매개변수 목록에는 하나의 가변 매개변수만 있을 수 있습니다.
- 변수 매개변수는 공식 매개변수 목록의 끝에 위치해야 합니다.
import java.util.Arrays;
/**
* 可变参数
*/
public class MethodDemo {
public static void main(String[] args) {
sum();//不传参数
sum(10);//1个参数
sum(11,22,33);//多个参数
sum(new int[]{11,22,33});//传数组
sum1(10);//1个参数
sum1(111,22,33);//多个参数
}
/**
* 一个形参列表中可变参数只能有一个;
* @param num 可变参数
*/
public static void sum(int...num){
//可变参数在方法内部本质上就是一个数组;
System.out.println("元素个数:" + num.length);
System.out.println("元素的内容" + Arrays.toString(num));
}
/**
*可变参数必须放在形参列表的最后;
* @param age 形参列表
* @param num 可变参数
*/
public static void sum1(int age,int...num){
//可变参数在方法内部本质上就是一个数组;
System.out.println("元素个数:" + num.length);
System.out.println("元素的内容" + Arrays.toString(num));
}
}
(2) 수집 작업 도구 클래스 수집:
- java.utils.Collections: 수집 도구 클래스입니다.
- 역할: 컬렉션은 컬렉션에 속하지 않지만 컬렉션을 조작하기 위한 도구 클래스입니다.
1. 관련 API를 정렬하는 컬렉션:
- 사용 범위: 목록 모음 정렬 전용
메서드 이름 | 설명하다 |
public static <T> 무효 정렬(List< T> List, Comparator<? super T> c) | 지정된 규칙에 따라 컬렉션을 정렬합니다. |
공개 정적 <T> 무효 정렬(List<T> 목록) | 기본 규칙에 따라 컬렉션의 요소를 정렬합니다. 참고: 이 정렬 방법은 사용자 정의 유형이 비교 규칙 Comparable 인터페이스를 구현하지 않는 한 사용자 정의 유형의 목록 컬렉션을 직접 정렬할 수 없습니다. |
2. 컬렉션 공통 API:
메서드 이름 | 설명하다 |
공개 정적 <T> 부울 addAll(Collection<? super T> c, T...elements) | 일괄적으로 컬렉션 개체에 요소 추가 |
공개 정적 무효 셔플(목록 <?> 목록) | 수집 순서 섞기 |
3. API 사용 코드는 다음과 같습니다.
import java.util.*;
/**
* 目标:Collections工具类使用,常见API
* 1.给集合对象批量添加元素
* -public static <T> boolean addAll(Collection<? super T> c, T...elements)
* 2.打乱集合顺序
* public static void shuffle(List<?> List)
* 3.将集合元素按照默认规则排序
* public static <T> void sort(List<T> list)
* 4.将集合元素按照制定规则排序
* public static <T> void sort(List<T> list.Comparator<? super T>)
*/
public class CollectionsDemo01 {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
//1.给集合对象批量添加元素
// names.add("大大");
// names.add("小小");
// names.add("青青");
Collections.addAll(names,"大大","小小","青青");
System.out.println(names);//[大大, 小小, 青青]
//2.打乱集合顺序
Collections.shuffle(names);
System.out.println(names);//[青青, 小小, 大大]
//3.将集合元素按照默认规则排序(排值特性的元素)
List<Integer> list = new ArrayList<>();
Collections.addAll(list,11,35,22,10);
System.out.println(list);//[11, 35, 22, 10]
Collections.sort(list);
System.out.println(list);//[10, 11, 22, 35]
//4.将集合元素按照制定规则排序
List<Apple> apples1 = new ArrayList<>();
apples1.add(new Apple("苹果1","红色",9.9,500));
apples1.add(new Apple("苹果2","绿色",19.9,500));
apples1.add(new Apple("苹果3","青色",29.9,300));
apples1.add(new Apple("苹果4","黄色",39.9,200));
//4.方式一:public static <T> void sort(List<T> list)
Collections.sort(apples1);//Apple类已经重写了比较规则
System.out.println(apples1);
//4.方式2:sort方法自带比较器对象
// public static <T> void sort(List< T> List, Comparator<? super T> c)
//
// Collections.sort(apples1, new Comparator<Apple>() {
// @Override
// public int compare(Apple o1, Apple o2) {
// return Double.compare(o1.getPrice(), o2.getPrice());
// }
// });
//代码简化
Collections.sort(apples1, ( o1, o2) -> Double.compare(o1.getPrice(), o2.getPrice()));
System.out.println(apples1);
}
}
class Apple implements Comparable<Apple>{
private String name;
private String color;
private Double price;
private int weight;
public Apple() {
}
public Apple(String name, String color, Double price, int weight) {
this.name = name;
this.color = color;
this.price = price;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
", price=" + price +
", weight=" + weight +
'}';
}
/**
* 自定义制定规则:方式一
* o1.compareTo(o2)
* @param o
* @return如果认为第一个元素大于第二个元素返回正整数即可。
* 如果认为第一个元素小于第二个元素返回负整数即可。
* 如果认为第一个元素等于第二个元素返回0即可,此时TreeSet集合只会保留一个元素,认为两者重复。
*/
@Override
public int compareTo(Apple o) {
return this.weight - o.weight;//List集合重复会保留
//List集合允许元素重复不需要以下步骤
// //如:按照重量进行比较
// //return this.weight - o.weight;//会去掉重量重复的元素
// return this.weight - o.weight >= 0 ? 1 : -1;//可以保留重量重复的元素
}
}