Map(掌握)
- 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
- Map和Collection的区别?
A.Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
B.Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。光棍 - Map接口功能概述
A.添加功能:V put(K key,V value)
B.删除功能:V put(K key,V value);void clear()
C.判断功能:boolean containsKey(Object key);boolean containsValue(Object value);boolean isEmpty()
D.获取功能:V get(Object key);
E.长度功能:int size() - Map集合的遍历
A.键找值
①:获取所有键的集合
②:遍历键的集合,得到每一个键
③:根据键到集合中去找值
B.键值对对象找键和值
①:获取所有的键值对对象的集合
②:遍历键值对对象的集合,获取每一个键值对对象
③:根据键值对对象去获取键和值
C.代码体现Map<String,String> hm = new HashMap<String,String>(); hm.put("it002","hello"); hm.put("it003","world"); hm.put("it001","java"); //方式1 键找值 Set<String> set = hm.keySet(); for(String key : set) { String value = hm.get(key); System.out.println(key+"---"+value); } //方式2 键值对对象找键和值 Set<Map.Entry<String,String>> set2 = hm.entrySet(); for(Map.Entry<String,String> me : set2) { String key = me.getKey(); String value = me.getValue(); System.out.println(key+"---"+value); }
Collections(理解)
- 是针对集合进行操作的工具类。
- Collection和Collections的区别
A.Collection 是单列集合的顶层接口,有两个子接口List和Set
B.Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等 - 常见的几个小方法:
A.public static <T> void sort(List<T> list)
B.public static <T> int binarySearch(List<?> list,T key)
C.public static <T> T max(Collection<?> coll)
D.public static void reverse(List<?> list)
E.public static void shuffle(List<?> list) - 模拟斗地主洗牌,发牌,并对牌进行排序
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; /*模拟洗牌和发牌 * 过程: * 创建一个牌盒; * 装牌; * 洗牌; * 发牌; * 看牌*/ public class Test { public static void main(String[] args){ ArrayList<String> array = new ArrayList<String>(); //装牌:黑红梅方 a-k //定义一个花色数组 String[] colors = {"♠","♥","♣","♦"}; //定义一个点数数组 String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; for(String color :colors){ for(String number: numbers){ array.add(color.concat(number)); } } array.add("小王"); array.add("大王"); System.out.println("array:"+array);//新牌 System.out.println("--------------------"); //洗牌 Collections.shuffle(array); System.out.println("array:"+array); //发牌 ArrayList<String> preson1 = new ArrayList<String>(); ArrayList<String> preson2 = new ArrayList<String>(); ArrayList<String> preson3 = new ArrayList<String>(); ArrayList<String> dipai = new ArrayList<String>(); for(int i =0 ;i<array.size();i++){ if(i>array.size()-4) dipai.add(array.get(i)); else if(i%3==0) preson1.add(array.get(i)); else if(i%3==1) preson2.add(array.get(i)); else if(i%3==2) preson3.add(array.get(i)); } //看牌 lookPoker("第一个人",preson1); lookPoker("第2个人",preson2); lookPoker("第3个人",preson3); lookPoker("底牌",dipai); } public static void lookPoker(String name,ArrayList<String> array){ System.out.println(name+"的牌是:"); for(String s :array){ System.out.println(s+" "); } System.out.println(); } }