계층 구조에서 루트 인터페이스를 수집합니다. 컬렉션은 수집 요소라고도하는 객체 세트를 나타냅니다. 일부 컬렉션은 중복 요소를 허용하는 반면 다른 컬렉션은 그렇지 않습니다. 일부 컬렉션은 주문되고 다른 컬렉션은 무질서합니다. JDK는이 인터페이스의 직접적인 구현을 제공하지 않습니다.보다 구체적인 하위 인터페이스 (예 : 세트 및 목록) 구현을 제공합니다. 이 인터페이스는 일반적으로 컬렉션을 통과하고 최대 보편성이 필요한 곳에서 이러한 컬렉션을 작동하는 데 사용됩니다.
메인 컨텐츠 : 여기서는 컬렉션 컬렉션을 사용하여 홍콩 영화의 Big Guys가 연기 한 포커 게임을 시뮬레이션합니다.
1. 게임 규칙 : 두 선수 각각은 두 장의 카드를 손에 넣고 비교합니다. 각 플레이어 카드의 최대 포인트를 비교하십시오. 크기는 A-2이며 가장 큰 포인트는 승리합니다. 포인트가 동일하면 양복의 색상을 비교하고 크기는 검은 색 (4), 빨간색 (3), 자두 (2), 사각형 (1)이며 슈트의 색상이 승자입니다.
2. 구현 단계 :
4 가지 색상의 검은 색 (4), 빨간색 (3), 자두 (2) 및 사각형 (1)의 총 52 장의 카드를 갖춘 카드 A-2 데크 A-2를 만듭니다.
플레이어 ID 및 이름 및 라이센스 카드 정보를 포함한 두 명의 플레이어를 만듭니다.
카드를 셔플하고 두 선수 모두에게 두 장의 카드를 처리하십시오.
플레이어의 손에있는 카드 크기를 비교하여 승자를 얻으십시오.
3. 프로그램 구현
카드 카테고리 : 카드의 숫자와 색상이 포함되어 있습니다.
Package CollectionTest.games; Public Class Card {Private Integer ID; // 카드의 크기 개인 정수 유형; // 카드 공개 카드의 색상 (정수 ID, 정수 유형) {this.id = id; this.type = 유형; } public Integer getId () {return id; } public void setId (정수 ID) {this.id = id; } public Integer getType () {return 유형; } public void settype (정수 유형) {this.type = 유형; } @override public String toString () {return "card [id =" + id + ", type =" + type + "]; }} 포커 포커 클래스 : 포커 카드 A-2 포함
Package CollectionTest.games; Public Class Poker {Private Card ID2; 개인 카드 ID3; 개인 카드 ID4; 개인 카드 ID5; 개인 카드 ID6; 개인 카드 ID7; 개인 카드 ID8; 개인 카드 ID9; 개인 카드 ID10; 개인 카드 j; 개인 카드 Q; 개인 카드 K; 개인 카드 A; Public Poker () {} // 4 가지 유형 : Black--4, 빨간색-3, Plum--2, Square--1 Public Poker (정수 유형) {this.id2 = new Card (2, type); this.id3 = 새 카드 (3, 유형); this.id4 = 새 카드 (4, 유형); this.id5 = 새 카드 (5, 유형); this.id6 = 새 카드 (6, type); this.id7 = 새 카드 (7, 유형); this.id8 = 새 카드 (8, 유형); this.id9 = 새 카드 (9, 유형); this.id10 = 새 카드 (10, type); this.j = 새 카드 (11, 유형); this.q = 새 카드 (12, 유형); this.k = 새 카드 (13, 유형); this.a = 새 카드 (14, 유형); } 공공 카드 getId2 () {return id2; } public void setId2 (card id2) {this.id2 = id2; } 공공 카드 getId3 () {return id3; } public void setId3 (card id3) {this.id3 = id3; } 공공 카드 getId4 () {return id4; } public void setId4 (card id4) {this.id4 = id4; } 공공 카드 getId5 () {return id5; } public void setId5 (card id5) {this.id5 = id5; } 공공 카드 getId6 () {return id6; } public void setId6 (card id6) {this.id6 = id6; } 공공 카드 getId7 () {return id7; } public void setId7 (card id7) {this.id7 = id7; } 공공 카드 getId8 () {return id8; } public void setId8 (card id8) {this.id8 = id8; } 공공 카드 getId9 () {return id9; } public void setId9 (card id9) {this.id9 = id9; } 공공 카드 getId10 () {return id10; } public void setId10 (card id10) {this.id10 = id10; } 공공 카드 getj () {return j; } public void setj (카드 j) {j = j; } 공공 카드 getq () {return q; } public void setq (카드 q) {q = q; } 공공 카드 getk () {return k; } public void setk (카드 k) {k = k; } 공공 카드 geta () {return a; } public void seta (카드 a) {a = a; }} 플레이어 클래스 : 플레이어 ID 및 이름, 카드 정보가 포함되어 있습니다.
Package CollectionTest.games; import java.util.arraylist; import java.util.list; public class player {// player 's id private string id; // 플레이어의 이름 개인 문자열 이름; // 플레이어가 보유한 플레이어의 라이센스 개인 목록 <cred> pokertype; public player () {} public Player (문자열 ID, 문자열 이름, list <crect> pokertype) {this.id = id; this.name = 이름; this.pokertype = new ArrayList <> (); } public String getId () {return id; } public void setId (String id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public list <crec> getpokertype () {return pokertype; } public void setpokertype (list <cred> pokertype) {this.pokertype = pokertype; }} 포커 게임 메인 카테고리 : 1) 포커 생성 2) 플레이어 생성 3) 수축 4) 할인 5) 승자와 손실 비교
Package CollectionTest.Games; import java.util.arraylist; import java.util.arrays; import java.util.collections; import java.util.hashmap; import java.util.hashset; import java.util.list; import java.util.map; import java.util.scanner; gamsbegin {// 재생 카드 만들기 공개 세트 <poker> cpoker () {system.out.println ( "************ 포커 카드 만들기 ************"); // 포커 데크 생성 // 4 가지 유형 : Black--4, 빨간색-3, Plum--2, Square--1 세트 <Poker> 포커 = New Hashset <> (); Poker [] Poker = {New Poker (1), New Poker (2), New Poker (3), New Poker (4)}; /** 수집 도구 클래스 사용* Collections.Addall (Pokers, New Poker (1), New Poker (2), New Poker (3), New Poker (4)); * * */ pokers.addall (arrays.aslist (poker)); System.out.println ( "********************** Poker 카드 생성 성공 ***********************************"); 반환 포커; } // 두 플레이어 생성 공개지도 <문자열, 플레이어> cplayer () {system.out.println ( "************ 플레이어 만들기 시작 ****************"); map <string, player> map = new Hashmap <String, player> (); // 숫자 정수 제어 컨트롤 = 0; System.out.println ( "두 명의 플레이어를 만들고 프롬프트에 따라 생성"); 스캐너 콘솔 = 새 스캐너 (System.In); while (true) {system.out.println ( ""+(Control+1)+"player id :"를 입력하십시오); 문자열 courseId = console.next (); if (isnumeric (courseid)) {System.out.println ( ""+(컨트롤+1)+"플레이어 이름 :"); 문자열 coursename = console.next (); 플레이어 플레이어 = 새로운 플레이어 (CourseId, Coursename, Null); // 데이터 맵 저장 (course, 플레이어); System.out.println ( "추가" + (Control + 1) + "Players" + Coursename + "Success"); // 숫자 별 ++ 추가; } else {System.out.println ( "****** 숫자 ID *******를 입력하십시오"); 계속하다; } if (control == 2) {break; }} system.out.println ( "************ 플레이어가 성공적으로 만들어졌습니다 ****************"); 리턴 맵; } // 입력이 숫자인지, 문자 인 DIGIT ()는 Java 메소드 인 Public Boolean isnumeric (String str) {for (int i = 0; i <str.length (); i ++) {if (! character.isdigit (str.charat (i))) {return false; }} true를 반환합니다. } / ***셔플 : 셔플을 달성하기 위해 52 개의 다른 랜덤 숫자를 생성 할 수 있습니다*** / public list <crect> wpoker (set <poker> pokers) {System.out.println ( "********* 시작 셔플 시작 **********"); // 순서대로 목록을 사용하고 셔플 후 순서를 저장하십시오. List <crect> listcard = new ArrayList <> (); // 셔플 세트를 달성하기 위해 비정규로 세트의 세트를 사용하여 <crect> listset = new Hashset <> (); // 세트 세트에 저장, (포커 pk : 포커) {listset.add (pk.getId2 ()); listset.add (pk.getId3 ()); listset.add (pk.getId4 ()); listset.add (pk.getId5 ()); listset.add (pk.getId5 ()); listset.add (pk.getId6 ()); listset.add (pk.getId7 ()); listset.add (pk.getId8 ()); listset.add (pk.getId9 ()); listset.add (pk.getId10 ()); listset.add (pk.getj ()); listset.add (pk.getq ()); listset.add (pk.getk ()); listset.add (pk.getk ()); listset.add (pk.geta ()); } // 목록 콜렉션에 저장, (카드 cd : listset) {listcard.add (cd); System.out.println (CD); } system.out.println ( "*********************** 성공적으로 개편 ********************************************************************************************************************T 리턴리스트 카드; } // 공개지도 거래 <문자열, 플레이어> Pushpoker (list <crect> listcard, map <문자열, 플레이어> pmap) {System.out.println ( "******************************************"); // 각 사람이 두 카드를 처리하도록 제어 int control = 0; for (map.Entry <string, player> entry : pmap.entryset ()) {if (control == 0) {for (int i = 0; i <3; i = i + 2) {// distribution entry.getValue (). getPokerType (). add (listcard.get (i)); } // 맵 객체 업데이트 pmap.put (entry.getKey (), entry.getValue ()); 제어 ++; } else if (control == 1) {for (int i = 1; i <4; i = i + 2) {// 배포 항목 .getValue (). getPokerType (). add (listCard.get (i)); } // 맵 객체 업데이트 pmap.put (entry.getKey (), entry.getValue ()); 제어 ++; } else {break; }} system.out.println ( "********************* 성공적인 거래 ***********"); PMAP 반환; } public void comparematch (map <string, player> newmap) { /* 승리 및 손실 비교* 1. 먼저 각 플레이어의 손에 가장 큰 카드의 ID와 정장 ID를 얻습니다. * 2. 두 선수의 손에 가장 큰 카드의 ID 크기를 비교하면 더 큰 사람이 승리합니다. * 3. 두 카드의 ID가 동일하면 두 카드의 소송 ID를 비교할 때 소송 ID가 커지고 승리가 이루어집니다. * * */ list <layer> 플레이어 = New ArrayList <> (); // (Map.Entry <String, Player> Entry : NewMap.EntrySet ()) {players.Add (Entry.GetValue ()); } // 플레이어 하나 정보 및 라이센스 목록 <crect> playerOne = player.get (0) .getPokerType (); // 가장 큰 카드 정수 oneMaxId = math.max (playerOne.get (0) .getId (), playerOne.get (1) .getId ()); 정수 oneMaxType = (oneMaxId! = playerOne.get (0) .getId ())? playerOne.get (1) .getType () : playerOne.get (0) .getType (); // 플레이어 두 정보 및 라이센스 목록 <Card> playerTwo = players.get (1) .getPokerType (); // 가장 큰 카드 정수의 ID와 소송을 가져옵니다. twomaxid = math.max (playertwo.get (0) .getid (), playertwo.get (1) .getid ()); 정수 twomaxtype = (twomaxid! = playertwo.get (0) .getid ())? playertwo.get (1) .gettype () : playertwo.get (0) .gettype (); if (onemaxid> twomaxid) {System.out.println ( "플레이어 :" + players.get (0) .getName () + "win !!"); } else if (onemaxid == twomaxId) {if (oneMaxType> twomaxType) {system.out.println ( "player :" + players.get (0) .getName () + "win !!"); } else {system.out .println ( "플레이어 :" + players.get (1) .getName () + "win!"); }} else {system.out.println ( "player :" + players.get (1) .getName () + "win !!"); } system.out.println ( "*****************************************************"); System.out.println ( "player :" + player.get (0) .getName () + "the card of"is : " + showname (0) .getType (), 0) +"-" + showingame (playerOne.get (0) .getId (), 1), 1) +" + showdame (playerOne.get (1). getType (), 0), 0). shavingame (playerOne.get (1) .getId (), 1); "player :" + player.get (1). getName () + "is :" + showdame (playertwo.get (0). shavingame (playertwo.get (1) .getType (), 0) + "-" + showingame (playerTwo.get (1) .getId (), 1); } // 디스플레이 카드의 이름 Showname (정수 I, 정수 유형) {String str = ""; // If (type == 0) {switch (i) {case 1 : {str = "cube"; 부서지다; } 사례 2 : {str = "plum blossom"; 부서지다; } 사례 3 : {str = "Heart"; 부서지다; } case 4 : {str = "str ="spads "; break;} 기본값 : {break;}}} // 숫자를 if (type == 1) {if (i <11) {return i.toString ();} else (i) {case 11 : {{{case 11 :} {str = {Q."} "Q"; BREAK} {str =}}}}} gb.cplayer (); // 셔플리스트 <creps. 실행 결과 :
********* 포커 카드 만들기 시작 **********
************* Poker 카드 생성 성공 *************
********* 플레이어 만들기 시작 *************
두 명의 플레이어를 만들려면 프롬프트에 따라 첫 번째 플레이어 ID를 입력하십시오.
첫 번째 플레이어 이름을 입력하십시오 :
Stephen Chow는 첫 번째 선수를 추가했습니다. 스티븐 차우가 성공했습니다. 두 번째 플레이어 ID를 입력하십시오 :
두 번째 플레이어 이름을 입력하십시오 :
Chow Yun-Fat은 두 번째 선수 인 Chow Yun-Fat을 성공적으로 추가했습니다
********** 플레이어 제작 성공 *************
************ 시작 셔플 시작 **********
카드 [id = 9, type = 3]
카드 [id = 11, type = 4]
카드 [id = 13, type = 3]
카드 [id = 8, type = 3]
카드 [id = 5, type = 2]
카드 [id = 6, type = 1]
카드 [id = 4, type = 3]
카드 [id = 5, type = 4]
카드 [id = 2, type = 3]
카드 [id = 9, type = 2]
카드 [id = 9, type = 4]
카드 [id = 14, type = 2]
카드 [id = 9, type = 1]
카드 [id = 2, type = 1]
카드 [id = 2, type = 4]
카드 [id = 7, type = 4]
카드 [id = 11, type = 1]
카드 [id = 10, type = 1]
카드 [id = 14, type = 4]
카드 [id = 14, type = 3]
카드 [id = 12, type = 2]
카드 [id = 2, type = 2]
카드 [id = 10, type = 2]
카드 [id = 7, type = 1]
카드 [id = 7, type = 3]
카드 [id = 8, type = 2]
카드 [id = 4, type = 4]
카드 [id = 13, type = 4]
카드 [id = 14, type = 1]
카드 [id = 12, type = 1]
카드 [id = 5, type = 1]
카드 [id = 6, type = 4]
카드 [id = 12, type = 4]
카드 [id = 11, type = 2]
카드 [id = 10, type = 3]
카드 [id = 3, type = 4]
카드 [id = 12, type = 3]
카드 [id = 4, type = 2]
카드 [id = 4, type = 1]
카드 [id = 6, type = 2]
카드 [id = 5, type = 3]
카드 [id = 8, type = 4]
카드 [id = 3, type = 2]
카드 [id = 13, type = 2]
카드 [id = 7, type = 2]
카드 [id = 3, type = 3]
카드 [id = 3, type = 1]
카드 [id = 6, type = 3]
카드 [id = 8, type = 1]
카드 [id = 11, type = 3]
카드 [id = 13, type = 1]
카드 [id = 10, type = 4]
************* 성공적인 개편 **********
************* 청구 거래 시작 ************
************* 성공적인 거래 *************
선수 : Stephen Chow가 이겼습니다! !
*************************************************
플레이어 : Stephen Chow의 카드는 : Red Peach-9 Red Peach-K
플레이어 : Chow Yun-Fat의 카드는 : Spades-J Red-8입니다
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.