java获取字典所有的key_Java 字典

字典 Map  存键值对

/       \

HashMap    LinkedHashMap

数组+链表        数组+双链表(有序)

自定义键对象(不能重)需要重写键的hashCode()方法、equals()方法。

Map

import java.util.Map;

import java.util.Set;

public class Demo01 {

public static void main(String[] args) {

Map map=new HashMap();

map.put("a","12"); //添加

map.put("b","1");

map.put("a","2");//覆盖a的值

System.out.println(map);//{a=2,b=1} 无顺序

//String v=map.remove("b");//删除键的值 返回

//System.out.println(v);

System.out.println(map.get("a"));//取值  没有返回null

// 通过keyset遍历map增强for

// Map不能直接用 迭代器/增强for遍历 需要转Set才能用

Set keys=map.keySet();   // 返回集合中所有键

for(String key:keys){

String value=map.get(key);   // 获取键的值

System.out.println(key+"..."+value);

}

//通过Iterater

Set keys2=map.keySet();

Iterator it=keys2.iterator();

while(it.hasNext()){

String key=it.next();

String value=map.get(key);

System.out.println(key+"..."+value));

}

//增强for + entrySet方法(键值对对象)

Set> entrys=map.entrySet();

for(Map.Entry entry:entrys){

String key=entry.getKey();

String value=entry.getValue();

System.out.println(key+"..."+value);

}

//Iterater遍历

Set> entrys2=map.entrySet();

Iterator> it2=entrys.iterator();

while(it2.hasNext()){

Map.Entry entry2=it2.next();

String key2=entry2.getKey();

String value2=entry2.getValue();

System.out.println(key2+"..."+value2);

}

}

}

Map map = new HashMap();//键内容不重

map.put(new Student("lisi",28), "上海");// Student重写HashCode()、equals()

多层字典

HashMap> oracle

=new HashMap>();

HashMap java0601=new HashMap();

java0601.put("001", new Person("小红帽",18));

java0601.put("002", new Person("小丸子",20));

HashMap java0929=new HashMap();

java0929.put("001", new Person("张超",22));

java0929.put("002", new Person("赵玉仙",21));

oracle.put("java0601", java0601);

oracle.put("java0929", java0929);

//遍历  增强for+keyset

Set classes=oracle.keySet();//所有键 集合   班级名字集合

for(String clas:classes){

HashMap c=oracle.get(clas);//获取班级集合 值

Set stunumbers=c.keySet();  // 人名集合 键

for(String num:stunumbers){

Person p=c.get(num); //人名集合 值

System.out.println("班级"+clas+"学号"+num+"学生"+p);

}

}

斗地主 发牌 例子

public static voidmain(String[] args) {//准备容器//牌序 牌值

HashMap pookerMap=new HashMap();

ArrayList pookerNumer=new ArrayList(); //牌序//准备牌

String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};

String[] color={"♥","♦","♣","♠"};int index=2;for(String num:number){for(String col:color){

pookerMap.put(index, col+num);//向Map中添加 牌序:牌值

pookerNumer.add(index); //向ArrayList添加 牌序号

index++;

}

}//添加大小王

pookerMap.put(0,"大王"); pookerNumer.add(0);

pookerMap.put(1,"小王"); pookerNumer.add(1);

System.out.println(pookerMap);//洗牌、发牌

Collections.shuffle(pookerNumer); //打乱 ArrayList 牌序号

ArrayList player1=new ArrayList();

ArrayList player2=new ArrayList();

ArrayList player3=new ArrayList();

ArrayList bottom=new ArrayList();for(int i=0;i

if(i<3){bottom.add(pookerNumer.get(i));} //前三个序号 添加 底牌

else if(i%3==0){player1.add(pookerNumer.get(i));}else if(i%3==1){ player2.add(pookerNumer.get(i));}else if(i%3==2){ player3.add(pookerNumer.get(i)); }

}//对三个玩家的牌 排序

Collections.sort(player1); Collections.sort(player2);

Collections.sort(player3); Collections.sort(bottom);//看牌

lookPooker("玩家1",player1,pookerMap);//名称 牌序号 字典

lookPooker("玩家2",player2,pookerMap);

lookPooker("玩家3",player3,pookerMap);

lookPooker("底牌",bottom,pookerMap);

}public static void lookPooker(String name,ArrayListplayer,HashMappookerMap){

System.out.println(name+": ");for(intindex:player){

System.out.print(pookerMap.get(index)+" ");//对应字典 找出 牌序号的 值

}

System.out.println();

}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值