最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java:map集合,字符出現(xiàn)次數(shù),ArrayList中嵌套HashMap等遍歷,斗地主,分牌

2020-03-15 19:40 作者:詩(shī)書(shū)畫(huà)唱  | 我要投稿


// 1."一閃一閃亮晶晶,滿(mǎn)天都是小星星",使用map集合計(jì)算每個(gè)字符出現(xiàn)了多少次


package a;


import java.util.HashMap;

import java.util.Set;


public class lizi {


public static void main(String[] args) {


String zijidingyidezifuchuan = "一閃一閃亮晶晶,滿(mǎn)天都是小星星";


HashMap<Object, Integer> HashMapduixiang1 = new HashMap<Object, Integer>();


for (int i = 0; i < zijidingyidezifuchuan.length(); i++) {


if (HashMapduixiang1.containsKey(zijidingyidezifuchuan.charAt(i))) {

int value = HashMapduixiang1.get(zijidingyidezifuchuan.charAt(i));

value += 1;

HashMapduixiang1.put(zijidingyidezifuchuan.charAt(i), value);

} else {


HashMapduixiang1.put(zijidingyidezifuchuan.charAt(i), 1);

}

}


Set<Object> set = HashMapduixiang1.keySet();

for (Object o : set) {

System.out.println("字符" + o + "出現(xiàn)了 " + HashMapduixiang1.get(o) + "次");


}

}


}



// 2.聲明ArrayList中嵌套HashMap,遍歷出來(lái)

package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Set;


public class lizi {


public static void main(String[] args) {


HashMap<Integer, String> HashMapduixiang1 = new HashMap<Integer, String>();

HashMapduixiang1.put(1, " 1詩(shī)書(shū)");

HashMapduixiang1.put(2, "2畫(huà)唱");

HashMapduixiang1.put(3, "3歌手");

HashMapduixiang1.put(4, "4舞者");

HashMap<Integer, String> HashMapduixiang2 = new HashMap<Integer, String>();

HashMapduixiang2.put(11, "11up主");

HashMapduixiang2.put(22, "22作家");

HashMapduixiang2.put(33, "33最強(qiáng)最好機(jī)器人的制作者");

HashMapduixiang2.put(44, "44作曲人");

HashMap<Integer, String> HashMapduixiang3 = new HashMap<Integer, String>();

HashMapduixiang3.put(111, "111作詞人");

HashMapduixiang3.put(222, "222CEO");

HashMapduixiang3.put(333, "333董事長(zhǎng)");

HashMapduixiang3.put(444, "444偉人");

ArrayList<HashMap<Integer, String>> ArrayListHashMapduixiang1 =?

new ArrayList<HashMap<Integer, String>>();

ArrayListHashMapduixiang1.add(HashMapduixiang1);

ArrayListHashMapduixiang1.add(HashMapduixiang2);

ArrayListHashMapduixiang1.add(HashMapduixiang3);

for (int ALHMxiabiao = 0; ALHMxiabiao < ArrayListHashMapduixiang1.size(); ALHMxiabiao++) {


HashMap<Integer, String> HashMapduixiang4 = ArrayListHashMapduixiang1

.get(ALHMxiabiao);

Set<Integer> HashMapduixiang4_zhongdekey = HashMapduixiang4

.keySet();

for (Integer HMxiabiao : HashMapduixiang4_zhongdekey) {

System.out.print("第" + (ALHMxiabiao + 1) + "個(gè)hashmap的內(nèi)容為"

+ HashMapduixiang4.get(HMxiabiao) + "\t");

}

System.out.println();

}

}

}

3.聲明學(xué)生類(lèi)和HashMap,使用HashMap存儲(chǔ)學(xué)生類(lèi),使用2種遍歷方式遍歷出學(xué)生信息


方法一:

package a;


import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;


public class lizi {


public static void main(String[] args) {


HashMap<student, String> HSduixiang = new HashMap<student, String>();


HSduixiang.put(new student("詩(shī)書(shū)", 22), "點(diǎn)贊省");


HSduixiang.put(new student("畫(huà)唱", 25), "投幣省");


HSduixiang.put(new student("帥哥", 24), "項(xiàng)省");


HSduixiang.put(new student("偉人", 26), "河省");

HSduixiang.put(new student("酷哥", 24), "江省");


System.out.println("第一種取出方式 ketSet:");


Set<student> keySet = HSduixiang.keySet();


Iterator<student> tiquchudeKey1 = keySet.iterator();


while (tiquchudeKey1.hasNext()) {


student Student_name_age1 = tiquchudeKey1.next();


String addr = HSduixiang.get(Student_name_age1);


System.out.println(Student_name_age1 + "---" + addr);


}


System.out


.println("HSduixiang.get(Student_name_age)中的Student_name_age這里充當(dāng)了Key,\n"


+ "就像引索,用關(guān)鍵詞搜索出要相關(guān)的內(nèi)容一樣,這里的相關(guān)內(nèi)容是地址addr");


System.out.println();


System.out.println("第二種取出方式entrySet:");


Set<Map.Entry<student, String>> entrySet = HSduixiang.entrySet();


Iterator<Map.Entry<student, String>> tiquchudeKey2 = entrySet

.iterator();


while (tiquchudeKey2.hasNext()) {


Map.Entry<student, String> yongMEdedaodeshujv = tiquchudeKey2

.next();


student Student_name_age2 = yongMEdedaodeshujv.getKey();


String addr = yongMEdedaodeshujv.getValue();


System.out.println(Student_name_age2 + "=====" + addr);


}


}


}


class student {


private int age;


private String name;


student(String name, int age) {


this.name = name;


this.age = age;


}


public int getAge() {


return age;


}


public String getName() {


return name;


}


@Override

public String toString() {


return name + ":" + age;


}


}


方法二詳析:

/*

?每一個(gè)學(xué)生都有對(duì)應(yīng)歸屬地。

?學(xué)生Student 地址 String。

?學(xué)生屬性:姓名,年齡。

?注意:姓名和年齡相同的視為同一個(gè)學(xué)生。

?保證學(xué)生的唯一性。


?步驟:

?1、描述學(xué)生。

?2、定義map容器,將學(xué)生作為鍵,地址作為值,存入。

?3、獲取map集合中的元素。

?*/

package a;


import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;


public class lizi {

public static void main(String[] args) {

HashMap<class_Student, String> HSduixiang = new HashMap<class_Student, String>();

HSduixiang.put(new class_Student("張三", 22), "北京");


HSduixiang.put(new class_Student("李四", 25), "上海");

HSduixiang.put(new class_Student("王五", 24), "香港");

HSduixiang.put(new class_Student("小張", 24), "煙臺(tái)");

HSduixiang.put(new class_Student("小李", 26), "濟(jì)南");


System.out.println("第一種取出方式 ketSet:");

Set<class_Student> keySet = HSduixiang.keySet();

Iterator<class_Student> tiquchudeKey1 = keySet.iterator();


while (tiquchudeKey1.hasNext()) {

class_Student Student_name_age1 = tiquchudeKey1.next();

String addr = HSduixiang.get(Student_name_age1);


System.out.println(Student_name_age1 + "---" + addr);

}

System.out

.println("HSduixiang.get(Student_name_age)中的Student_name_age這里充當(dāng)了Key,\n"

+ "就像引索,用關(guān)鍵詞搜索出要相關(guān)的內(nèi)容一樣,這里的相關(guān)內(nèi)容是地址addr");

System.out.println();

System.out.println("第二種取出方式entrySet:");


Set<Map.Entry<class_Student, String>> entrySet = HSduixiang.entrySet();

Iterator<Map.Entry<class_Student, String>> tiquchudeKey2 = entrySet.iterator();

while (tiquchudeKey2.hasNext()) {

Map.Entry<class_Student, String> yongMEdedaodeshujv = tiquchudeKey2.next();

class_Student Student_name_age2 = yongMEdedaodeshujv.getKey();

String addr = yongMEdedaodeshujv.getValue();

System.out.println(Student_name_age2 + "=====" + addr);

}

}

}


class class_Student implements Comparable<class_Student> {

private int age;

private String name;


class_Student(String name, int age) {

this.name = name;

this.age = age;

}


@Override

public int compareTo(class_Student s) {

// TODO 自動(dòng)生成的方法存根:

int num = new Integer(this.age).compareTo(new Integer(s.age));

if (num == 0)

return this.name.compareTo(s.name);

return num;

}


@Override

public boolean equals(Object obj) {

if (!(obj instanceof class_Student))

throw new ClassCastException("類(lèi)型不匹配");

class_Student s = (class_Student) obj;

return this.name.equals(s.name) && this.age == age;

}


public int getAge() {

return age;

}


public String getName() {

return name;

}


// 保證鍵的唯一性:

@Override

public int hashCode() {

return name.hashCode() + age * 34;

}


@Override

public String toString() {

return name + ":" + age;

}

}




4.一副牌是54張,三個(gè)人斗地主,進(jìn)行分牌,分給每個(gè)人牌,并且還有有底牌

方法三(共4種方法,我在另一篇專(zhuān)欄寫(xiě)過(guò)了):

package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] Stringchucundepai = new String[] { "?A", "?2", "?3", "?4",

"?5", "?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K", "?A",

"?2", "?3", "?4", "?5", "?6", "?7", "?8", "?9", "?10", "?J",

"?Q", "?K", "?A", "?2", "?3", "?4", "?5", "?6", "?7", "?8",

"?9", "?10", "?J", "?Q", "?K", "?A", "?2", "?3", "?4", "?5",

"?6", "?7", "?8", "?9", "?10", "?J", "?Q", "?K" };


HashMap<String, Integer> HSchucundejiadepai = new HashMap<>();

HashMap<String, Integer> HSchucundeyidepai = new HashMap<>();

HashMap<String, Integer> HSchucundebingdepai = new HashMap<>();


ArrayList<String> yongALchucundeshuju = new ArrayList<String>();

for (int i = 0; i < Stringchucundepai.length; i++) {


yongALchucundeshuju.add(Stringchucundepai[i]);


}


yongALchucundeshuju.add("大王");

yongALchucundeshuju.add("小王");


Random suijishu = new Random();


String fangzidawangxiaowangchongfu = null;

for (int k = 0; k < 100; k++) {

int zongpaishu = yongALchucundeshuju.size();


int yongRandomdedaodesuijishu1 = suijishu.nextInt(zongpaishu);


int yongRandomdedaodesuijishu2 = suijishu.nextInt(zongpaishu);

if (yongRandomdedaodesuijishu1 == yongRandomdedaodesuijishu2)

continue;

{

fangzidawangxiaowangchongfu = yongALchucundeshuju


.get(yongRandomdedaodesuijishu1);


yongALchucundeshuju.set(yongRandomdedaodesuijishu1,

yongALchucundeshuju.get(yongRandomdedaodesuijishu2));

yongALchucundeshuju.set(yongRandomdedaodesuijishu2,

fangzidawangxiaowangchongfu);

}

}


ArrayList<String> yongALchucundejiadepai = new ArrayList<String>();

ArrayList<String> yongALchucundeyidedepai = new ArrayList<String>();

ArrayList<String> yongALchucundebingdepai = new ArrayList<String>();

ArrayList<String> yongALchucundedipai = new ArrayList<String>();

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


if (i >= yongALchucundeshuju.size() - 3) {


yongALchucundedipai.add(yongALchucundeshuju.get(i));


} else if (i % 3 == 0) {


yongALchucundejiadepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 1) {

yongALchucundeyidedepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 2) {

yongALchucundebingdepai.add(yongALchucundeshuju.get(i));

}

}

System.out.println("底牌:" + yongALchucundedipai);

System.out.println("甲被發(fā)到的牌:" + yongALchucundejiadepai);

System.out.println("乙被發(fā)到的牌:" + yongALchucundeyidedepai);

System.out.println("丙被發(fā)到的牌:" + yongALchucundebingdepai);


}

}





方法詳析:

package a;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.Random;


public class lizi {

public static void main(String[] args) {

String[] Stringchucundepai = new String[] { "A", "2", "3", "4", "5",

"6", "7", "8", "9", "10", "J", "Q", "K" };

HashMap<String, Integer> HSchucundejiadepai = new HashMap<>();

HashMap<String, Integer> HSchucundeyidepai = new HashMap<>();

HashMap<String, Integer> HSchucundebingdepai = new HashMap<>();

/*HashMap無(wú)序儲(chǔ)存,所以可以隨機(jī),概率相等且公平

* 個(gè)人理解:HSchucundejiadepai是用HashMap儲(chǔ)存的甲的牌<String, Integer>為泛型的應(yīng)用,

* 表明只儲(chǔ)存String和Integer類(lèi)型的數(shù)據(jù)

*/

ArrayList<String> yongALchucundeshuju = new ArrayList<String>();


/*

* 個(gè)人理解:這里的<String>為泛型,是規(guī)定集合可儲(chǔ)存范圍條件的,

* ArrayList<String>表明只儲(chǔ)存String到ArrayList里面

*/

for (int i = 0; i < Stringchucundepai.length; i++) {

/* Stringchucundepai.length=13 */

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

yongALchucundeshuju.add(Stringchucundepai[i]);

/*

* 用add和for循環(huán),在"(用ArrayList儲(chǔ)存的String數(shù)據(jù))yongALchucundeshuju"中添加了

* 4個(gè)"Stringchucundepai[0]("A")到Stringchucundepai[12]("K")",13*4=52

*/

}

yongALchucundeshuju.add("大王");

yongALchucundeshuju.add("小王");

/*

* 用add在"(用ArrayList儲(chǔ)存的String數(shù)據(jù))yongALchucundeshuju"中添加了

* "大王","小王",13*4+2=54

*/

Random suijishu = new Random();

/* suijishu為用Random得到的隨機(jī)數(shù) */

String fangzidawangxiaowangchongfu = null;/*

* fangzidawangxiaowangchongfu是防止

* "大王"

* "小王"等重復(fù)的,這種先在for外面設(shè)null的方法可常用于防重復(fù)

*/

for (int k = 0; k < 100; k++) {

int zongpaishu = yongALchucundeshuju.size();

/* yongALchucundeshuju.size()=13*4+2=54,zongpaishu為總牌數(shù) */

int yongRandomdedaodesuijishu1 = suijishu.nextInt(zongpaishu);

/*

* suijishu為隨機(jī)數(shù), nextInt用于規(guī)定隨機(jī)數(shù)suijishu可取值得范圍,這里是zongpaishu,即54。

* nextInt(54)等同于nextInt(54)+0,就是0到54(含頭不含尾),即為0到53(含頭含尾)

* “yongRandomdedaodesuijishu1”是“用Random得到的隨機(jī)數(shù)1”

*/

int yongRandomdedaodesuijishu2 = suijishu.nextInt(zongpaishu);

if (yongRandomdedaodesuijishu1 == yongRandomdedaodesuijishu2)

continue;/*

* 這里continue表明當(dāng)用Random得到的隨機(jī)數(shù)1=用Random得到的隨機(jī)數(shù)2時(shí),

* 跳過(guò)當(dāng)次循環(huán)中剩下的語(yǔ)句,執(zhí)行下一次循環(huán)(即不執(zhí)行且不出現(xiàn)“用Random得到的隨機(jī)數(shù)1=

* 用Random得到的隨機(jī)數(shù)2”的情況, 其他的{}中的語(yǔ)句會(huì)執(zhí)行 ,

*/


/*

* continue和break有點(diǎn)類(lèi)似,區(qū)別在于continue只是終止本次循環(huán),接著還執(zhí)行后面的循環(huán),break則完全終止循環(huán)。

*

*     可以理解為continue是跳過(guò)當(dāng)次循環(huán)中剩下的語(yǔ)句,執(zhí)行下一次循環(huán)。

*/

{

fangzidawangxiaowangchongfu = yongALchucundeshuju


.get(yongRandomdedaodesuijishu1);

/* 這里有一個(gè)賦值的過(guò)程,就像進(jìn)行兩個(gè)變量a和b,用c進(jìn)行交換a和b的值,防止a,b在賦值時(shí)相等

* 不信,可以把fangzidawangxiaowangchongfu改為yongALchucundeshuju


.get(yongRandomdedaodesuijishu1),保證會(huì)重復(fù) */

yongALchucundeshuju.set(yongRandomdedaodesuijishu1,

yongALchucundeshuju.get(yongRandomdedaodesuijishu2));

yongALchucundeshuju.set(yongRandomdedaodesuijishu2,

fangzidawangxiaowangchongfu);

}/*

* 個(gè)人理解:set用于插入數(shù)據(jù),這里往yongALchucundeshuju中插入

* yongRandomdedaodesuijishu1(int類(lèi)型),

* yongALchucundeshuju.get(yongRandomdedaodesuijishu2)

* (yongRandomdedaodesuijishu2這里為下標(biāo),含頭含尾的0到53)

* 等數(shù)據(jù),yongALchucundeshuju 儲(chǔ)存了得到的數(shù)據(jù),要用時(shí)就拿出來(lái)

*/

}


ArrayList<String> yongALchucundejiadepai = new ArrayList<String>();

ArrayList<String> yongALchucundeyidedepai = new ArrayList<String>();

ArrayList<String> yongALchucundebingdepai = new ArrayList<String>();

ArrayList<String> yongALchucundedipai = new ArrayList<String>();

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

/* yongALchucundeshuju.size() =54 */

if (i >= yongALchucundeshuju.size() - 3) {

/* yongALchucundeshuju.size() - 3=54-3=52 */

yongALchucundedipai.add(yongALchucundeshuju.get(i));

/*

* yongALchucundedipai為用ArrayList儲(chǔ)存的底牌,i可為含頭含尾的0到53

* yongALchucundeshuju.get(i)就可為含頭含尾的4組“"A", "2", "3", "4", "5",

* "6", "7", "8", "9", "10", "J", "Q", "K"”和一組"大王","小王"

*/

} else if (i % 3 == 0) {

/*

* i % 3 == 0表明可被3整除余數(shù)為0, 在含頭含尾的下標(biāo)0到53中,出現(xiàn)i % 3 == 0和出現(xiàn)i % 3 ==

* 1和 出現(xiàn)i % 3 == 2的概率互相相同,“0,1,2”,“3,4,5”,......“51,52,53”

* 編程,電腦,大腦等就是“儲(chǔ)存和取出”

*/

yongALchucundejiadepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 1) {

yongALchucundeyidedepai.add(yongALchucundeshuju.get(i));

} else if (i % 3 == 2) {

yongALchucundebingdepai.add(yongALchucundeshuju.get(i));

}

}

System.out.println("底牌:" + yongALchucundedipai);

System.out.println("甲被發(fā)到的牌:" + yongALchucundejiadepai);

System.out.println("乙被發(fā)到的牌:" + yongALchucundeyidedepai);

System.out.println("丙被發(fā)到的牌:" + yongALchucundebingdepai);


System.out.println("1代表?, 2代表?, 3代表?,4代表?");


for (String str : yongALchucundejiadepai) {

/* yongALchucundejiadepai用ArrayList儲(chǔ)存的甲的牌,有隨機(jī)個(gè)下標(biāo)值 */

if (HSchucundejiadepai.containsKey(str)) {

HSchucundejiadepai.put(str, HSchucundejiadepai.get(str) + 1);

} else

HSchucundejiadepai.put(str, 1);

}


System.out.println("甲被發(fā)到的牌對(duì)應(yīng)圖形情況:" + HSchucundejiadepai);


for (String str : yongALchucundeyidedepai) {

/* yongALchucundejiadepai用ArrayList儲(chǔ)存的乙的牌,有隨機(jī)個(gè)下標(biāo)值 */

if (HSchucundeyidepai.containsKey(str)) {

HSchucundeyidepai.put(str, HSchucundeyidepai.get(str) + 1);

} else

HSchucundeyidepai.put(str, 1);

}

System.out.println("乙被發(fā)到的牌對(duì)應(yīng)圖形情況:" + HSchucundeyidepai);


for (String str : yongALchucundebingdepai) {

/* yongALchucundejiadepai用ArrayList儲(chǔ)存的丙的牌,有隨機(jī)個(gè)下標(biāo)值 */

if (HSchucundebingdepai.containsKey(str)) {

HSchucundebingdepai.put(str, HSchucundebingdepai.get(str) + 1);

} else

HSchucundebingdepai.put(str, 1);

}

System.out.println("丙被發(fā)到的牌對(duì)應(yīng)圖形情況:" + HSchucundebingdepai);

}

}


Java:map集合,字符出現(xiàn)次數(shù),ArrayList中嵌套HashMap等遍歷,斗地主,分牌的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
许昌市| 眉山市| 咸阳市| 平原县| 仙游县| 奉节县| 获嘉县| 尼勒克县| 肃南| 平顺县| 达尔| 周宁县| 陇西县| 兴宁市| 贵州省| 邮箱| 特克斯县| 南涧| 嘉鱼县| 冕宁县| 云和县| 左云县| 乐东| 望江县| 社会| 花垣县| 宝兴县| 徐水县| 伊金霍洛旗| 马龙县| 新民市| 金华市| 潢川县| 微山县| 周宁县| 盘锦市| 香格里拉县| 民丰县| 工布江达县| 德州市| 阳新县|