目录
可变参数
就是一种特殊的形参,定义在方法和构造器的形参列表中,格式是: 数据类型...参数名称
外部可以接受多个该类型的参数,也可以接收这个参数的数组
而他的内部是一个数组
一个形参列表只能由一个可变参数
可变参数要放到形参列表的后面
public class zheng {
public static void main(String[] args) {
test(); // 不传数据
test(10); // 传一个数据给它
test(10,20,30); // 传输多个数据给他
test(new int[]{10,20,30,40,50}); // 传输一个数组给可变参数
}
public static void test(int...number) {
// 可变参数在方法内部,本质上是一个数组
System.out.println(number.length);
System.out.println(Arrays.toString(number));
System.out.println("---------------------");
}
}
Collections
工具类: 类名.方法 有static修饰的
public class zheng {
public static void main(String[] args) {
// 1.public static <T> boolean addAll(Collection<? super T> c,T...elements):
// 为集合批量添加数据
List<String> names = new ArrayList<>();
Collections.addAll(names, "张三","王五","李四","张麻子");
System.out.println(names);
// 2.public static void shuffle(List<?> list) 打乱List集合中的元素顺序
Collections.shuffle(names);
System.out.println(names);
// 3.public static <T> void sort(List<T> list) 对List集合中的元素进行升序排序
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(5);
list.add(2);
Collections.sort(list);
System.out.println(list);
}
}
下面时设置表示方法
// 比较的对象不能排序的时候,那就方法重写
List<Student>Student = new ArrayList<>();
Student.add(new Student("李小谦",18,100));
Student.add(new Student("李玉刚",58,90));
Student.add(new Student("李德华",48,60));
Collections.sort(Student);
System.out.println(Student);
// 实现接口的匿名内部类
Collections.sort(Student, new Comparator<bag5.Student>() {
@Override
public int compare(bag5.Student o1, bag5.Student o2) {
return Double.compare(o1.getScore(),o2.getScore());
}
});
上面的方法1在Student中的实现类是
上面就是相当于用sort方法的时候,给出了Student具体按照什么指标来排序
小案例:斗地主游戏
main类
package bag5;
import org.w3c.dom.ls.LSOutput;
import java.sql.SQLOutput;
import java.util.*;
import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class zheng {
public static void main(String[] args) {
// 1.牌类
// 2.房间
// 3.创建一个房间
Room room = new Room();
// 3.启动游戏
room.start();
}
}
创建一个Card类,用来创建Card对象
package bag5;
public class Card {
private String color;
private String number;
private int size;
public Card() {
}
public Card(String color, String number, int size) {
this.color = color;
this.number = number;
this.size = size;
}
@Override
public String toString() {
return color+number;}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
创建一个房间类
package bag5;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Room {
// 必须有一副牌
private List<Card> allCards = new ArrayList<>();
List<Card> lingHuChong = new ArrayList<>();
List<Card> lixiaoqian = new ArrayList<>();
List<Card> zhangsanfeng = new ArrayList<>();
public Room()
{
// 1. 做出54张牌,存入集合allCards
// a. 点数: 个数确定,类型确定
String[] n