Java-->可变参数+集合操作的工具类
作者:互联网
- 可变参数:
1 public class MethodDemo { 2 public static void main(String[] args) { 3 sum();//不传参数 4 sum(5); //一个参数 5 sum(1,2,3); //多个参数 6 sum(new int[]{5,6,4,7,8}); 7 } 8 public static void sum(int...sum){ 9 // 可变参数在方法内部其实就是一个数组 10 System.out.println("元素个数:" + sum.length); 11 System.out.println("元素内容:" + Arrays.toString(sum)); 12 } 13 }
示例运行结果:
1 import java.util.*; 2 3 public class CollectionsDemo1 { 4 public static void main(String[] args) { 5 List<String> names = new ArrayList<>(); 6 // names.add("小明"); 7 // names.add("小白"); 8 // names.add("小清"); 9 // names.add("小楚"); 10 //System.out.println("------------------"); 11 //使用集合工具类可以一行添加元素 12 Collections.addAll(names,"小明","小白","小清","小楚"); 13 System.out.println(names); 14 15 //打乱(List)集合顺序 16 Collections.shuffle(names); 17 System.out.println(names); 18 19 //将(List)集合按照指定规则进行排序 20 List<Integer> list = new ArrayList<>(); 21 // list.add(18); 22 // list.add(19); 23 // list.add(21); 24 // list.add(5); 25 Collections.addAll(list,10,1,12,13); 26 Collections.sort(list); 27 System.out.println(list); 28 } 29 }
示例运行结果:
自定义比较规则:
方式一:类自定义比较规则
示例运行结果:
可以看到,因为List集合是可重复的,所以保留了集合中数值相同的对象内容。
方式二:sort()方法自带的比较器对象
示例运行结果:
我们会发现,sort()方法自带的比较器对象进行比较,使用Lambda表达式简化后仅需一行代码即可完成比较操作,并且它会优先于类自定义比较规则进行执行,因此在实际的开发中会更加常用一点。
- 案例:斗地主游戏
- 需求:在启动游戏房间的时候,应该题前准备好54张牌,完成洗牌、发牌、牌排序逻辑。
分析:
- 当系统启动的同时需要准备好数据的时候,就可以使用静态代码块了;
- 洗牌就是打乱牌的顺序;
- 定义三个玩家,依次发出54张牌;
- 给玩家的牌进行排序;
- 输出每个玩家的牌数据。
牌类:
1 package com.companyName.d4_collection_test; 2 3 public class Card { 4 private String size; 5 private String color; 6 private int index; //牌真正的大小 7 8 public Card() { 9 } 10 11 public Card(String size, String color, int index) { 12 this.size = size; 13 this.color = color; 14 this.index = index; 15 } 16 17 public int getIndex() { 18 return index; 19 } 20 21 public void setIndex(int index) { 22 this.index = index; 23 } 24 25 public String getSize() { 26 return size; 27 } 28 29 public void setSize(String size) { 30 this.size = size; 31 } 32 33 public String getColor() { 34 return color; 35 } 36 37 public void setColor(String color) { 38 this.color = color; 39 } 40 41 @Override 42 public String toString() { 43 return size + color; 44 } 45 }
测试类:
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 import java.util.List; 5 6 public class GemeDemo { 7 //1、做牌,定义一个静态代码块,用集合存储54张牌 8 public static List<Card> allCards = new ArrayList<>(); 9 static { 10 String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; 11 String[] colors = {"❤", "♦", "♣", "♠"}; 12 int index = 0; 13 for (String size : sizes) { 14 index ++; 15 for (String color : colors) { 16 Card card = new Card(size,color,index); 17 allCards.add(card); 18 } 19 } 20 //添加大小王 21 Card king = new Card("","大标签:index,Java,String,--,add,可变,public,allCards,size 来源: https://www.cnblogs.com/yumengqifei/p/16337292.html