2017-06-17 12 views
-2

を削除私は小さなカードゲームを記述しようとしていますとなっている私は、オブジェクトの配列リストをクラスのデッキを作成し、それにJAVA ArrayListのソートとペア

を立ち往生、各オブジェクトは、で構成される演奏デッキにカードを1枚表しストリングスーツ、ストリング名、および2-14のint値。 私は2つの追加の配列リスト、player1とplayer2でゲームのための別のクラスを作成し、各プレイヤーにArrayListのデッキからカードを「対処」。います私はゲームをプレイし続けることができ 前に、私は両方player1とplayer2のArrayListからすべてのペアを削除する必要があります。

私はgetValue()メソッドでarraylistをソートしようとしていましたが、player1.getValue(i).equals(player1.getValue(i + 1))を使用してarraylistを繰り返して2回取り除きました。

private void removePlayer1Pairs(ArrayList<Card> player1) { 
    Collections.sort(player1); 

    int i = 0; 
    while(i < player1.size() - 1){ 
     if(player1.getFaceValue(i).equals(player1.getFaceValue(i+1))){ 

      player1.remove(i); 
      player1.remove(i); 

      i = Math.max(0, (i - 1)); 
     } 
     else{ 
      i++; 
      } 
    } 
}//end removePlayer1Pairs 

私はメソッドのソートは()メソッドは、5行目の任意の提案、この作品を作る上で定義されていないのgetValueだけでなく、2行目にArrayListには適用されないエラーが発生します?私はただのArrayList

+1

は' Card'は '' Comparableを実装する必要があります。あなたは 'カード'クラスを見せていただけますか? – 4castle

+0

あなたの説明であなたが言うように 'getValue'ではなく' getFaceValue'を呼び出します。それは意図的なのでしょうか? – forgivenson

+0

オブジェクトカードをコンパレータでソートします。 –

答えて

0

Camparableがあなたのために動作しますが、あなたはコンパレータを使用することができます別のオプションがあります。あなたの問題のために、次のコードはうまく動作します。

Collections.sort(player1, new Comparator<Card>() { 

     @Override 
     public int compare(Card c1, Card c2) { 
      Integer a = c1.getFaceValue(); 
      Integer b = c2.getFaceValue(); 
      return a.compareTo(b); // for descending order use b.compareTo(a) 
     } 
    }); 

faceValueとスーツのような他のフィールドで同時にソートする場合は、Comparatorを使用している必要があります。 `Collections.sort`は、動作するため

0

を学んでいますあなたは、ソートアルゴリズムは、別のより小さい/一枚のカードに大きな可能かを知ることになっているか、あなたが作成したタイプのArrayListの上でソートを呼び出すことはできません?あなたを作りますRカードのクラスのソートが働くことができるように、Comparableを実装:

public class Card implements Comparable<Card> { 
    @Override 
    public int compareTo(Card card) { 
     //compare card sizes here, i.e Card.value or whatever 
    } 

を今、あなたはあなたのカードを並べ替えることができます。重複を除去するよう

Collections.sort(player1); 

、多分のみ含めることができますセットにArrayListのを追加ユニークを作成し、ArrayListに戻しますか?

+0

ありがとうGetValueメソッドではありません申し訳ありませんが、私はこれをしようとしています – calKooLator