ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-06-02 22:03:42  阅读:132  来源: 互联网

标签:index Java String -- add 可变 public allCards size


 

 

 

  • 可变参数:
 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("","大

标签:index,Java,String,--,add,可变,public,allCards,size
来源: https://www.cnblogs.com/yumengqifei/p/16337292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有