Java-->可变参数+集合操作的工具类

2022/6/3 1:20:31

本文主要是介绍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张牌,完成洗牌、发牌、牌排序逻辑。

分析:

  1. 当系统启动的同时需要准备好数据的时候,就可以使用静态代码块了;
  2. 洗牌就是打乱牌的顺序;
  3. 定义三个玩家,依次发出54张牌;
  4. 给玩家的牌进行排序;
  5. 输出每个玩家的牌数据。

牌类:

 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("","大

	


这篇关于Java-->可变参数+集合操作的工具类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程