5.1 Map的概述和使用
package demo11Map;
import java.util.HashMap;
import java.util.Map;
public class Demo01Map {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("021540630","单宏远");
map.put("021540631","张广浩");
map.put("021540632","马硕");
System.out.println(map);
}
}
5.2 Map的基本使用操作
package demo11Map;
import java.util.HashMap;
import java.util.Map;
public class Demo01Map {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("021540630","单宏远");
map.put("021540631","张广浩");
map.put("021540632","马硕");
//根据键值删除元素
System.out.println(map.remove("021540630"));
//看是否包含键值
System.out.println(map.containsKey("021540631"));//true
//看是否包含元素
System.out.println(map.containsValue("张广浩"));//true
//清空
//map.clear();
System.out.println(map.isEmpty());
System.out.println(map.size());
System.out.println(map);
}
}
/*
单宏远
true
true
false
2
{021540632=马硕, 021540631=张广浩}
*/
5.3 Map集合的获取功能
package demo11Map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo02Get {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<>();
map.put(001,"杜琪峰");
map.put(002,"徐克");
map.put(003,"王晶");
//根据键值获取元素
System.out.println(map.get(001));
//set集合储存键值
Set<Integer> set=map.keySet();
for(Integer i:set){
System.out.println(i);
}
//collection集合储存元素
Collection<String> co=map.values();
for(String s:co){
System.out.println(s);
}
}
}
/*
杜琪峰
1
2
3
杜琪峰
徐克
王晶
*/
5.4 Map的第一种遍历方法
package demo11Map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
Map集合的遍历(方法1)
*/
public class Demo03Map {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<>();
map.put(001,"杜琪峰");
map.put(002,"徐克");
map.put(003,"王晶");
//keySet得到键值
Set<Integer> set=map.keySet();
for(Integer i:set){
String val = map.get(i);
System.out.println(i+","+val);
}
}
}
5.5 Map的第二种遍历方法
package demo11Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
使用键值对对象来遍历map
*/
public class Demo04Map {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<>();
map.put(001,"杜琪峰");
map.put(002,"徐克");
map.put(003,"王晶");
Set<Map.Entry<Integer, String>> en = map.entrySet();
for(Map.Entry<Integer, String> u:en){
Integer key = u.getKey();
String value = u.getValue();
System.out.println(key+","+value);
}
}
}
/*
1,杜琪峰
2,徐克
3,王晶
*/
5.6 HashMap存储学生对象并遍历
package demo11Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo05Student {
public static void main(String[] args) {
Map<String,Student> map=new HashMap<>();
Student s1=new Student("王麟",33);
Student s2=new Student("崔子格",34);
Student s3=new Student("周洁琼",23);
map.put("singer001",s1);
map.put("singer002",s2);
map.put("singer003",s3);
Set<Map.Entry<String, Student>> set = map.entrySet();
//遍历
for(Map.Entry<String,Student> s:set){
String key = s.getKey();
Student value = s.getValue();
System.out.println(key+","+value.getName()+","+value.getAge());
}
}
}
/*
singer001,王麟,33
singer003,周洁琼,23
singer002,崔子格,34
*/
5.7 HashMap储存学生类为键值
package demo11Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
更改元素要重写Student方法
*/
public class Demo06HashMap {
public static void main(String[] args) {
Map<Student,String> map=new HashMap<>();
Student s1=new Student("吴京",38);
Student s2=new Student("吴彦祖",42);
Student s3=new Student("吴老二",78);
Student s4=new Student("吴老二",78);
map.put(s1,"北京");
map.put(s2,"香港");
map.put(s3,"铁岭");
map.put(s4,"沈阳");
Set<Map.Entry<Student, String>> set = map.entrySet();
for(Map.Entry<Student,String> s:set){
int age = s.getKey().getAge();
String name = s.getKey().getName();
String value = s.getValue();
System.out.println(age+"的"+name+"住在"+value);
}
}}
/*
38的吴京住在北京
42的吴彦祖住在香港
78的吴老二住在沈阳
*/
5.8 ArrayList集合存储HashMap元素并遍历
package demo11Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
ArrayList集合存储HashMap元素并遍历
*/
public class Demo07ArrayList {
public static void main(String[] args) {
ArrayList<Map<String,String>> arr=new ArrayList<>();
Map<String,String> m1=new HashMap<>();
m1.put("贾乃亮","李小璐");
m1.put("王宝强","马蓉");
arr.add(m1);
Map<String,String> m2=new HashMap<>();
m2.put("文章","马伊琍");
m2.put("谢霆锋","张柏芝");
arr.add(m2);
Map<String,String> m3=new HashMap<>();
m3.put("刘恺威","杨幂");
m3.put("汪峰","章子怡");
arr.add(m3);
for(Map<String,String> s:arr){
Set<String> set = s.keySet();
for(String str:set){
String s1 = s.get(str);
System.out.println(str+","+s1);
}
}
}
}
/*
贾乃亮,李小璐
王宝强,马蓉
文章,马伊琍
谢霆锋,张柏芝
汪峰,章子怡
刘恺威,杨幂
*/
5.9 用HashMap遍历ArrayList
package demo11Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/*
用HashMap遍历ArrayList
*/
public class Demo08HashMap {
public static void main(String[] args) {
HashMap<String, ArrayList<String>> hm=new HashMap<>();
ArrayList<String> sg=new ArrayList<>();
sg.add("赵子龙");
sg.add("张光北");
ArrayList<String> sh=new ArrayList<>();
sh.add("西门庆");
sh.add("杜淳");
ArrayList<String> xy=new ArrayList<>();
xy.add("唐三藏");
xy.add("迟重瑞");
hm.put("三国",sg);
hm.put("水浒",sh);
hm.put("西游",xy);
Set<String> keyset = hm.keySet();
for(String s:keyset){
ArrayList<String> arr = hm.get(s);
for(String ss:arr){
System.out.println(ss+"是"+s+"的");
}
}
}
}
5.10 统计输入字符串中字符的种类和个数
package demo11Map;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*
统计字符串中每个字符出现的个数
*/
public class Demo09 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.nextLine();
//创建HashMap集合
HashMap<Character,Integer> hm=new HashMap<>();
//获取每一个字符
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
Integer value = hm.get(ch);
if(hm.get(ch)==null){
hm.put(ch,1);
}else{
value++;
hm.put(ch,value);
}
}
//用StringBuilder拼接字符串
StringBuilder sb=new StringBuilder();
Set<Character> key = hm.keySet();
for(Character s:key){
Integer value = hm.get(s);
sb.append(s).append("(").append(value).append(")");
}
String result = sb.toString();
System.out.println(result);
}
}
/*
请输入字符串
wozhanzaicaoyuanwangbeijing
a(5)b(1)c(1)e(1)g(2)h(1)i(3)j(1)n(4)o(2)u(1)w(2)y(1)z(2)
*/
5.11 Collections的概述和基本使用
package demo11Map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo10Collections {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(20);
list.add(40);
list.add(30);
list.add(10);
list.add(50);
//Collections.sort(list);
//Collections.reverse(list);
Collections.shuffle(list);//随机排序
System.out.println(list);
}
}
5.12 ArrayList储存学生对象并排序(Collections.sort)
package demoArray;
import java.util.*;
public class Demo03ArrayList {
public static void main(String[] args) {
Student s1=new Student("guofucheng",39);
Student s2=new Student("liming",39);
Student s3=new Student("liudehua",42);
Student s4=new Student("zhangxueyou",57);
List<Student> list=new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int sum=s1.getAge()-s2.getAge();
int sum2=sum == 0?s1.getName().compareTo(s2.getName()):sum;
return sum2;
}
});
for(Student s:list){
System.out.println(s.getAge()+"的"+s.getName()+"帅到喷汁");
}
}
}
5.13 模拟斗地主
package demoArray;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
/*
模拟斗地主发牌过程
*/
public class Demo04Poker {
public static void main(String[] args) {
//ArrayList添加Poker
String[] huase={"♥","♠","♣","♦"};
String[] dianshu={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
ArrayList<String> poker=new ArrayList<>();
for(String s1:huase){
for(String s2:dianshu){
String xiaopai = s1 + s2;
poker.add(xiaopai);
}
}
poker.add("小王");
poker.add("大王");
//洗牌
Collections.shuffle(poker);
//发牌
ArrayList<String> zjhPoker=new ArrayList<>();
ArrayList<String> ztaPoker=new ArrayList<>();
ArrayList<String> zbzPoker=new ArrayList<>();
ArrayList<String> dipai=new ArrayList<>();
for(int i=0;i<poker.size();i++){
String pai=poker.get(i);
if(i>=poker.size()-3){
dipai.add(pai);
}else if(i%3==0){
zjhPoker.add(pai);
}else if(i%3==1){
ztaPoker.add(pai);
}else if(i%3==2){
zbzPoker.add(pai);
}
}
//看牌
LookPoker("张天爱",ztaPoker);
LookPoker("张家辉",zjhPoker);
LookPoker("张柏芝",zbzPoker);
LookPoker("底牌",dipai);
//System.out.println(poker);
//System.out.println(ztaPoker);
}
//看牌
public static void LookPoker(String name,ArrayList<String> eachPoker){
System.out.print(name+"的牌是:");
for(String s:eachPoker){
System.out.print(s+" ");
}
System.out.println();
}
}
/*
张天爱的牌是:♦7 ♥A ♠10 ♥4 ♥Q ♥8 ♣7 ♥6 ♣Q ♥5 ♣J ♦A 大王 ♥7 ♦J ♣10 ♣3
张家辉的牌是:♠4 ♠8 ♦5 ♦4 小王 ♠Q ♣6 ♦K ♦8 ♣9 ♣K ♦2 ♠A ♠K ♦6 ♥J ♣2
张柏芝的牌是:♠3 ♣4 ♦9 ♥10 ♠6 ♠7 ♥K ♠5 ♥3 ♥9 ♦10 ♦3 ♥2 ♦Q ♣8 ♠2 ♣A
底牌的牌是:♠9 ♠J ♣5
*/