import java.util.ArrayList;
import java.util.Arrays;
public class Test02 {
public static void main(String[] args) {
int[] arr1 = {1,2,3,45,5,6,7};
int[] arr2 = {11,12,13,145,15,16,17};
//将原数组中从索引1开始 复制5个元素到目的数组
System.arraycopy(arr1,1,arr2,0,5);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
ArrayList<String> list = new ArrayList<>();
list.add("001");
list.add("002");
list.add("003");
list.add("004");
list.add("005");
list.add("006");
System.out.println(list);
list.add(1,"09");
System.out.println(list);
System.out.println("--------------------");
//已经数组长度为15 存储7个元素 其余元素为null值 在指定索引为1的位置处添加一个元素"西门庆" 其余元素依次后移
String[] arr = {"1","2","3","4","5","6","7",null,null,null,null,null,null,null,null};
//数组中元素个数
int sixe = 7;
//要添加元素的索引位置
int index = 1;
//要添加的元素
String e = "西门庆";
//首先计算数组中要移动元素的个数 移动个数 = 真实存储元素个数-指定索引
int MoveNuber =sixe-index;
if (MoveNuber >0){
System.arraycopy(arr,index,arr,index+1,MoveNuber);
}
arr[index] = e;
sixe++;
for (int i = 0; i < sixe; i++) {
System.out.println(arr[i]);
}
//数组中存储n个元素,将指定索引处的元素删除,并将后面的元素依次进1,将最后的一个元素置为null值
String[] names = {"柳岩","唐嫣","金莲","大郎","西门庆","aaa"};
//要删除元素的索引
int index1 = 2;
//要移动元素的个数
int moveNumber = names.length -index1-1;
if (moveNumber>0){
System.arraycopy(names,index1+1,names,index1,moveNumber);
}
//打印复制后的数组
System.out.println(Arrays.toString(names));
//将数组最后一个元素的值设置为null
names[names.length-1] = null;
System.out.println(Arrays.toString(names));
for (int i = 0; i < names.length-1; i++) {
System.out.println(names[i]);
}
}
}
(Map、可变参数、Cloneable)综合练习
需求:
准备牌 定义一个Map集合用来存储 牌索引 扑克牌 定义一个List集合用来存储 牌索引 定义一个花色的数组 "♥-♠-♣-♦" 定义一个牌数字的数字 "2-A-K-Q-J-10-9-8-7-6-5-4-3" 循环拼接扑克牌 将牌索引 和拼接后的扑克牌放入到map集合中 将牌索引入到list集合中 单独添加大王和小王 洗牌 Collections public static void shuffle(List list) 打乱顺序 发牌 三个玩家 三个集合 底牌一个集合 遍历List集合发 判断索引 发牌索引 >=51 底牌 %3== 0 玩家1 %3== 1 玩家2 %3== 2 玩家3 排序 看牌 遍历玩家集合 获取到每个牌的索引 到map集合中找到对应的扑克牌 显示
代码演示:
import java.util.*;
public class Pooker {
public static void main(String[] args) {
// 定义一个Map集合用来存储 牌索引 扑克牌
Map<Integer, String> map = new HashMap<>();
// 定义一个List集合用来存储 牌索引
List<Integer> list = new ArrayList<>();
// 定义一个花色的数组 "♥-♠-♣-♦"
String[] colors = "♥-♠-♣-♦".split("-");
//定义一个牌数字的数组 "2-A-K-Q-J-10-9-8-7-6-5-4-3"
String[] nums = "2-A-K-Q-J-10-9-8-7-6-5-4-3".split("-");
//循环拼接
int index = 2;
for (String num : nums) {
for (String color : colors) {
String thisPooker = color + num;
//将牌索引 和拼接后的扑克牌放入到map集合中
map.put(index,thisPooker);
index++;
}
}
//单独添加大王和小王
map.put(0,"大☺");
map.put(1,"小☻");
// System.out.println(map);
//将牌的索引 添加到List集合中
for (int i = 0; i < 54; i++) {
list.add(i);
}
// System.out.println(list);
//洗牌
Collections.shuffle(list);
//发牌
List<Integer> player1 = new ArrayList<>();
List<Integer> player2 = new ArrayList<>();
List<Integer> player3 = new ArrayList<>();
List<Integer> diPai = new ArrayList<>();
//遍历List集合发 判断索引 发牌索引
for (int i = 0; i < list.size(); i++) {
Integer pookerIndex = list.get(i);
if(i >= 51){
diPai.add(pookerIndex);
}else if(i % 3 == 0){
player1.add(pookerIndex);
}else if(i % 3 == 1){
player2.add(pookerIndex);
}else {
player3.add(pookerIndex);
}
}
//排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(diPai);
// System.out.println(player1);
// System.out.println(player2);
// System.out.println(player3);
// System.out.println(diPai);
show("柳岩",player1,map);
show("唐嫣",player2,map);
show("发哥",player3,map);
show("底牌",diPai,map);
}
public static void show(String name,List<Integer> player, Map<Integer, String> map ){
StringBuilder sb = new StringBuilder();
sb.append(name+":[");
for (int i = 0; i < player.size(); i++) {
Integer key = player.get(i);
String pooker = map.get(key);
sb.append(pooker);
if(i == player.size()-1){
sb.append("]");
}else {
sb.append(", ");
}
}
System.out.println(sb.toString());
}
}
结果:
柳岩:[小☻, ♠2, ♦2, ♥K, ♣K, ♥Q, ♦Q, ♣10, ♦10, ♠9, ♦9, ♥8, ♣8, ♠6, ♠5, ♦4, ♦3]
唐嫣:[♣2, ♥A, ♠A, ♣A, ♠Q, ♠J, ♦J, ♥10, ♥9, ♣9, ♠8, ♦8, ♣5, ♥4, ♣4, ♠3, ♣3]
发哥:[大☺, ♥2, ♦K, ♣Q, ♥J, ♣J, ♠10, ♥7, ♠7, ♣7, ♦7, ♥6, ♣6, ♥5, ♦5, ♠4, ♥3]
底牌:[♦A, ♠K, ♦6]