【问题标题】:java determine max element of the list of objects [closed]java确定对象列表的最大元素[关闭]
【发布时间】:2013-11-26 22:27:35
【问题描述】:

我有一个ArrayList 的对象,我需要找到最大值。这种情况实际上与此处相同(best way to find maximum age element of List)。 Ian Bishop 的回答很适合,但是当 n 个对象的年龄相同时,我需要说没有最大值并打印 "Equals" + maxAge

如何修改这段代码来实现这一点?

【问题讨论】:

    标签: java arraylist max


    【解决方案1】:

    使用额外的boolean 来检查怎么样:

    Man maxAge = new Man(0);
    boolean isAmaxFoud = false;
    
    for(Man man : list) {
      if(man.age > maxAge.age) {
        maxAge = man;
        isAmaxFound = true;
      }
    }
    
    if(!isAmaxFound) // <<--- all age are equal
          print "Equals "+list.get(0)
    else print maxAge
    

    【讨论】:

      【解决方案2】:

      如果您只需要一次获取最大值,请遍历列表并跟踪到目前为止的最大值。如果您还保留boolean 以告知您是否多次看到最大值,并在找到新最大值时将其设置为 false 并在找到等于最大值时将其设置为 true,那么应该可以。

      【讨论】:

        【解决方案3】:

        您可以对已接受的答案进行简单修改:

        Man maxAge = null;
        boolean unique = true;
        for(Man man : list) {
            if (maxAge == null) {
                maxAge = man;
                unique = true;
            } else if (man.age > maxAge.age) {
                maxAge = man;
                unique = true;
            } else if (man.age == maxAge.age) {
                unique = false;
            }
        }
        if (maxAge == null) {
            System.out.println("Empty list!");
        } else {
            if (unique) {
                System.out.println("Max age: " + maxAge.age);
            } else {
                System.out.println("Max age is not unique; equals " + maxAge.age);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-05
          • 2015-01-17
          • 1970-01-01
          • 1970-01-01
          • 2018-08-01
          • 2020-12-29
          • 2023-03-15
          • 2013-09-25
          相关资源
          最近更新 更多