【问题标题】:tagging elements in a list and comparing them标记列表中的元素并比较它们
【发布时间】:2013-10-08 08:07:55
【问题描述】:

我有一个存储在“僵尸”中的项目列表。时间的系统打印会给我。

[<1.0, 3.0, 2.0>, <2.0, 5.0, 4.0>, <2.0, 4.0, 1.0>, <4.0, 7.0, 3.0>]

我的问题是如何为列表中的每个元素分配一个标签,以便我可以轻松调用它们&lt;age, height, weight&gt;

标签的最终想法是让我可以对“最重”的僵尸进行排序并将结果存储到哈希图中。

 public class zombieCalculator{

    double age;
    double weight;
    double height;  

        public static Map<Position, List<Position>> Random (List<Position> zombie) {

        System.out.println(time);

        }

       public zombieCalculator( double age, double weight, double height)
  {
      this.age= age;
      this.weight= weight;
      this.height = height;

  } 
    }

【问题讨论】:

    标签: java list data-structures arraylist hashmap


    【解决方案1】:

    我认为最好的选择是创建一个具有这 3 个参数年龄、身高和脂肪的 Class Zombie。 然后您可以创建一个 Fat-Comparator-Class 来根据 fat-parameter 对僵尸进行排序:

    class FatZombieComparator implements Comparator<Zombie>{
    
         int compare(Zombie z1, Zombie z2){
           return z1.getFat() - z1.getFat();
         }
     }
    

    现在您可以将 Zombies 存储在列表中并使用比较器对列表进行排序:

    List<Zombie> zombies = new ArrayList<Zombie>();
    zombies.add(...);
    Collections.sort(zombies, new FatZombieComparator())
    

    您可以为年龄或身高创建新的比较类

    【讨论】:

    • 嗨@JohnnyAW,我不太了解比较器的工作原理。我已经根据您对(僵尸类)和 3 参数的建议编辑了我的代码。不过还是有点混淆标签部分。
    • 对一个列表进行排序java需要知道,如何比较2个对象(僵尸),比较器对象通过比较方法告诉java如何比较2个僵尸。我实际上并不真正理解标记问题......你有僵尸对象,你可以通过zombie.getAge(),zombie.getFat()和zombie.getHeight()访问年龄,脂肪和身高
    • 我明白你在比较 2 个对象方面的意思。我提到标记的原因是因为输入只是数字。没有迹象表明哪个是年龄、身高、脂肪。 - @johnnyAW
    • 在这种情况下,您应该根据输入创建一个僵尸对象列表,例如 new Zombie(3,2,4)。将值分配给对象参数后,您可以通过 get-methods 访问它
    【解决方案2】:

    你需要一个 Zombi 类。

    class Zombi{
        double age, height, fat;
    
        @Override
        public String toString() {
            return "age: " + age + ", height: " + height + ", fat: " + fat;
        }
    }
    

    把地图改成

    Map<Position, Zombi> map;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2017-03-12
      • 1970-01-01
      • 2015-09-30
      • 2023-04-03
      相关资源
      最近更新 更多