您的位置:首页 > 职场人生

黑马程序员——关于集合的例题

2015-10-13 23:54 267 查看
<pre name="code" class="java">
import java.util.Set;import java.util.TreeMap;/* * * ”aabcbdeeeeedbddcc”,获取字符串中每一个字母出现的次数。要求结果:a(2)b(3)c(3)d(4)e(5) * 分析: 1,每个字母出现的次数和字母是一一对应的关系,所以我们应该想到的是Map的双列集合 2,因为从结果看打印字母的顺序都有序,所以可以使用map集合中的TreeMap集合 思路: 1,将字符串变成字符数组,因为要操作字符串中的每一个字母 2,遍历数组,将每一个字母都作为键去map集合中获取值
3,如果获取的值为null,说明该键不存在,就将该键和1存入到集合中,如果该值不为null,说明该键已经存在于map集合,并有对应的值,那么就将该值取出,并自增后,再将该键和新的值存入map集合中,因为键相同,新值会覆盖老值 4,遍历结束map集合中就已经具备了每一个字母对应的次数 5,将集合中的数据变成字符串打印 */public class cha_3 {public static void main(String[] args) {String s = "aabcbdeeeeedbddcc";String
result = method(s);System.out.println(result);}public static String method(String s) {//创建TreeMap集合,用于存储字母与数字的对应关系TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();//1,将字符串变成字符数组,因为要操作字符串中的每一个字母char[] chars = s.toCharArray();//2,遍历数组,将每一个字母都作为键去map集合中获取值for
(char key : chars) {//将每一个字母都作为键去map集合中获取值Integer value = tm.get(key);//3,如果获取的值为null,说明该键不存在,就将该键和1存入到集合中,//如果该值不为null,说明该键已经存在于map集合,并有对应的值,那么就将该值取出,并自增后,//再将该键和新的值存入map集合中,因为键相同,新值会覆盖老值//如果结果map中没有该字母,就加入该字母1次if(value == null) {tm.put(key, 1);}else {//如果有该字母,就获取该字母之前出现的次数value,再加1次,重新覆盖之前的次数tm.put(key,
++value);}}//5,将集合中的数据变成字符串打印//创建字符串缓冲区对象,用于使用map数据拼写结果StringBuilder sb = new StringBuilder();//返回所有键的集合Set<Character> keySet = tm.keySet();//迭代键的集合依次获取每个键for (Character key : keySet) {//使用Map通过键获取值Integer value = tm.get(key);sb.append(key).append("(").append(value).append(")");}return
sb.toString();}}

2.模拟斗地主发牌

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class ddz {
public static void main(String[] args) {
ArrayList<Integer> pai = new ArrayList<Integer>();
for (int i = 0; i < 54; i++) {
pai.add(i);
}
//新建一个对应关系的map集合
Map<Integer, String> dic = new HashMap< Integer, String>();

//新建一个集合存放花色
ArrayList<String> hs =new ArrayList<String>();
Collections.addAll(hs, "♠","♥","♣","♦");
//存放数字
ArrayList<String> pm = new ArrayList<>();
for (int i = 3; i < 11; i++) {
pm.add(i+"");
}
Collections.addAll(pm, "J","Q","K","A","2");
//依次拼写每张牌
//定义临时变量 用于记录键的变华情况
int temp =0;
for (String pmz : pm) {
for (String hsz : hs) {
String dicsj = hsz+pmz;
dic.put(temp++, dicsj);
}

}
//加入大王小王
dic.put(temp++, "小王☹");
dic.put(temp++, "大王☺");
System.out.println(dic);

//洗牌
Collections.shuffle(pai);

TreeSet<Integer> play1 = new TreeSet<Integer>();
TreeSet<Integer> play2 = new TreeSet<Integer>();
TreeSet<Integer> play3 = new TreeSet<Integer>();
TreeSet<Integer> dp = new TreeSet<Integer>();

for (int i = 0; i <pai.size(); i++) {

if(i>50){
dp.add( pai.get(i));
}
else{
if(i%3==0){
play1.add( pai.get(i));
}
else if(i%2==0){
play2.add( pai.get(i));
}
else if(i%1==0){
play3.add( pai.get(i));
}
}

}
System.out.println(getString(play1, dic));
System.out.println(getString(play2, dic));
System.out.println(getString(play3, dic));
System.out.println(getString(dp, dic));

}

public static String getString(Set<Integer> player,Map<Integer,String> dic) {

StringBuilder sb = new StringBuilder();

sb.append("{");
for (Integer integer : player) {
sb.append(dic.get(integer)+" ");
}
sb.append("}");

return sb.toString();
}

}
3.集合嵌套
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class itcast {

private static Set<String> keySet;

public static void main(String[] args) {
//定义map集合 存储传智博客
HashMap<String, HashMap<String, ArrayList<String>>> czbk = new HashMap<String, HashMap<String, ArrayList<String>>>();
//准备各个分校
HashMap<String, ArrayList<String>> bjclasss = new HashMap<String, ArrayList<String>>();
ArrayList<String> je = new ArrayList<String>();
Collections.addAll(je, "JAVAEE1班", "JAVAEE2班", "JAVAEE3班", "JAVAEE4班", "JAVAEE5班", "JAVAEE6班");

ArrayList<String> js = new ArrayList<String>();
Collections.addAll(js, "JAVASE1班", "JAVASE2班", "JAVASE3班", "JAVASE4班", "JAVASE5班", "JAVASE6班", "JAVASE7班", "JAVASE8班");

bjclasss.put("javaEE",je);
bjclasss.put("javaSE",js);

HashMap<String,ArrayList<String>> shclasss = new HashMap<String, ArrayList<String>>();
ArrayList<String> je1 = new ArrayList<String>();
Collections.addAll(je1, "JAVAEE1班", "JAVAEE2班", "JAVAEE3班", "JAVAEE4班", "JAVAEE5班");

ArrayList<String> js1 = new ArrayList<String>();
Collections.addAll(js1, "JAVASE1班", "JAVASE2班", "JAVASE3班", "JAVASE4班", "JAVASE5班", "JAVASE6班");

shclasss.put("JAVAEE",je1);
shclasss.put("JAVASE",js1);
//为传智博客添加元素
czbk.put("北京校区", bjclasss);
czbk.put("上海校区", shclasss);
//返回外层集合中所有见得集合
Set<String> keySet2 = czbk.keySet();
//迭代外层键的集合号一次获取外层件的集合号
for (String outkey : keySet2) {

//huo获取内层键
System.out.println(outkey);
HashMap<String, ArrayList<String>> out_value = czbk.get(outkey);
Set<String>in_key = out_value.keySet();
for (String inkey : in_key) {
System.out.println("\t"+inkey);
ArrayList<String> inarr = out_value.get(inkey);
Iterator<String> iterator = inarr.iterator();
while (iterator.hasNext()) {
String bj = (String) iterator.next();
System.out.println("\t\t"+bj);
}
}
}
}

public static Set<String> getKeySet() {
return keySet;
}

public static void setKeySet(Set<String> keySet) {
itcast.keySet = keySet;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: