b站课程地址:https://www.bilibili.com/video/BV18J411W7cE?p=257
1 Map
- 使用put方法来添加元素;当put方法中的键重复出现时,则为修改元素
- Student是自定义类,若要实现学生对象的成员变量值相同,就认为是同一个对象,需要在学生类中重写方法(自动生成即可)
- 集合嵌套:
-
import java.util.HashMap; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; public class test002 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String line = sc.nextLine(); //HashMap<Character,Integer> hm = new HashMap<Character,Integer>(); //TreeMap可以排序 TreeMap<Character,Integer> hm = new TreeMap<Character,Integer>(); for(int i = 0; i<line.length(); i++){ char key = line.charAt(i); Integer value = hm.get(key); if(value == null){ hm.put(key,1); }else{ value++; hm.put(key,value); } } StringBuilder sb = new StringBuilder(); Set<Character> characters = hm.keySet(); for(Character c : characters){ Integer value = hm.get(c); sb.append(c).append("(").append(value).append(")"); } System.out.println(sb.toString()); } }
2 Collections
- Collections类是针对集合操作的工具类
3 模拟斗地主
-
import java.util.ArrayList; import java.util.Collections; public class PokerDemo { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>(); /* ♦2... ♦K,♦A ♣2,... ♥2,... ♠2,... 小王,大王 * */ //定义花色数组 String[] colors = {"♦","♣","♥","♠"}; //定义点数数组 String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //向牌盒里存牌 for(String color : colors){ for(String number : numbers){ array.add(color+number); } } array.add("小王"); array.add("大王"); //洗牌 Collections.shuffle(array); //发牌 ArrayList<String> tangArray = new ArrayList<String>(); ArrayList<String> heArray = new ArrayList<String>(); ArrayList<String> huArray = new ArrayList<String>(); ArrayList<String> dpArray = new ArrayList<String>(); for(int i = 0; i < array.size(); i++){ String poker = array.get(i); if(i>=array.size()-3){ dpArray.add(poker); } else if(i % 3 == 0){ tangArray.add(poker); } else if(i % 3 == 1){ heArray.add(poker); } else if(i % 3 == 2){ huArray.add(poker); } } //看牌 lookPokers("唐",tangArray); lookPokers("何",heArray); lookPokers("胡",huArray); lookPokers("底牌",dpArray); } public static void lookPokers(String name, ArrayList<String> array){ System.out.print(name + "的牌是:"); for(String poker : array){ System.out.print(poker + " "); } System.out.println(); } }
-
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class PokerNewDemo { public static void main(String[] args) { //创建HashMap,键是编号,值是牌 HashMap<Integer, String> hm = new HashMap<Integer, String>(); //创建ArrayList,存储编号 ArrayList<Integer> array = new ArrayList<Integer>(); //创建花色数组和点数数组 String[] colors = {"♦","♣","♥","♠"}; String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; int index = 0; for(String number : numbers){ for(String color : colors){ hm.put(index, color+number); array.add(index); index++; } } hm.put(index,"小王"); array.add(index); index++; hm.put(index,"大王"); array.add(index); //洗牌,洗的是编号 Collections.shuffle(array); //发牌,发的是编号 TreeSet<Integer> tangSet = new TreeSet<Integer>(); TreeSet<Integer> huSet = new TreeSet<Integer>(); TreeSet<Integer> heSet = new TreeSet<Integer>(); TreeSet<Integer> dpSet = new TreeSet<Integer>(); for(int i = 0; i<array.size(); i++){ int x = array.get(i); if(i>=array.size()-3){ dpSet.add(x); } else if(i % 3 == 0){ tangSet.add(x); } else if(i % 3 == 1){ huSet.add(x); } else if(i % 3 == 2){ heSet.add(x); } } lookPokers("唐",tangSet,hm); lookPokers("胡",huSet,hm); lookPokers("何",heSet,hm); lookPokers("底牌",dpSet,hm); } //看牌方法 public static void lookPokers(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) { System.out.print(name + "的牌是:"); for(Integer key : ts){ String poker = hm.get(key); System.out.print(poker + " "); } System.out.println(); } }