java - 使用 'compareTo' 比较两个对象 ArrayLists 的总和

标签 java

我需要编写代码,让用户可以比较 2 手牌,找出总体上最有值(value)的牌。我有一个 Card 对象的类,每个对象都有一个值,然后是 Hand 对象的类,将许多卡片存储为 ArrayList。

结果需要用下面的代码来回答:int comparison = hand1.compareTo(hand2);所以我解决这个问题的代码需要在 Hand 类的 compareTo 方法中。

我已经开始执行 for-each 循环,但它似乎无法将此处的“鼠标”识别为 ArrayList

import java.util.ArrayList;
import java.util.Collections;

public class Hand implements Comparable<Hand> {
    private ArrayList<Card> hand = new ArrayList<Card>();

    public Hand(ArrayList hand) {

    }

    public void add(Card card) {
        hand.add(card);
    }

    public void print(){
        for (Card mouse : hand){
            System.out.println(mouse.toString());
        }
    }

    public void sort(){
        Collections.sort(hand);
    }

    public int compareTo(Hand mouse){
        int x = 0;
        int y = 0;
        for (Card moose : hand){

            x = x + moose.getValue();
        }

        for (Card house : mouse){ // <<<<<<<< ERROR

            y = y + house.getValue();
        }
        if (x > y){
            return 1;
        }
        return 0;
    }
}

我收到一条错误消息,指出鼠标不是数组。但如果它是一个“手”,那么它肯定是一个数组?我知道我在这里做了一些愚蠢的事情,但我不知道那是什么。

最佳答案

Hand不是数组或 Iterable .增强的 for 循环只能迭代那些有某种概念的东西是“你可以迭代的东西”。

事实上有一个 List<Card>在类中是无关紧要的——你必须告诉 Java 如何迭代你的类的一个实例,因为你可能不希望它迭代那个列表;或者可能有很多列表,所以没有一个可供选择。

让它实现Iterable<Card> :

public class Hand implements Comparable<Hand>, Iterable<Card> {
  // ...

  @Override public Iterator<Card> iterator() {
    return hand.iterator();
  }

  // ...
}

关于java - 使用 'compareTo' 比较两个对象 ArrayLists 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754074/

相关文章:

java - 我可以在没有 webdriver 的真实浏览器上运行 selenium 2 吗?

java - 如何避免 finally block 中的 throw 子句

java - TYPE_INT_ARGB_PRE 的影响

java - 线程 "main"java.lang.NoClassDefFoundError : org/springframework/boot/SpringApplication 中的异常

java - 如何从 HttpServletRequest 请求中删除参数?

java - 何时在 Junit 5 中使用动态测试

java - 对象列表中的整数总和

java - 如何使用 JPA 和 Spring Data 执行存储过程?

java - 使用 HQL Select 的 Hibernate 和 JAX-RS 响应

java - 在 JVM 中并行加载同一库的不同版本