黑马程序员技术交流社区

标题: 比较对象中年龄最大并输出 [打印本页]

作者: 冬冬宋    时间: 2016-8-16 20:02
标题: 比较对象中年龄最大并输出
[AppleScript] 纯文本查看 复制代码
package hemowork;

import java.util.ArrayList;
import java.util.ListIterator;

import student.Student1;

public class Demo2 {

        /**
         * @param args
         * 2,把集合中存储多个Person对象,Person有姓名和年龄,找出年龄最大的
                        a,定义一个Person类型的变量, 先记住第一个元素
                        b,循环遍历集合
                        c,用每一个元素和变量比较年龄, 如果集合中的元素比变量记住的年龄大
                        d,用变量记住这个年龄较大的元素
                        e,返回变量记住的元素
         */
        public static void main(String[] args) {
                ArrayList<Student1> list = new ArrayList<>();
                list.add(new Student1("志玲",18));
                list.add(new Student1("bady",28));
                list.add(new Student1("冰冰",30));
                list.add(new Student1("张天爱",20));
                list.add(new Student1("刘亦菲",18));
                list.add(new Student1("徐志摩",31));
                ListIterator<Student1> it = list.listIterator();//获取迭代器
                //Student1 s = new Student1();
               
                /*//s = list.get(0);
                Object [] arr = list.toArray();
                for (int i = 0; i < arr.length; i++) {
                        Student s =
                        System.out.println(arr.getAge());*/
                //int i = 0;
                Student1 str = list.get(0);//定义临时Student的临时变量,取出第一个元素并记住
                while(it.hasNext()){        //对集合进行遍历
                        Student1 s2 = it.next();//创建一个变量s2用来接收每一次迭代出来的元素
                        if(s2.getAge()>str.getAge()){        //用迭代出来的元素年龄变量和临时变量记录元素的年龄比较
                                //System.out.println(s2);
                                str=s2;//如果条件满足,临时变量记住这个值
                        }else{
                                str=str;//如果不满足,则临时变量还是记录原来自己记录的值
                                //System.out.println(str);
                        }
                        //System.out.println(str);
                }
                System.out.println(str);//比较结束输出临时变量里面记录的值,
        }

}

作者: zztierlie    时间: 2016-8-17 15:32
赞一个,赞一个
作者: 阿卜    时间: 2016-8-17 16:00
利用Collections.sort(List<T> list, Comparator<? super T> c)排序后再取出第一个或者最后一个元素更简洁。
作者: talons    时间: 2016-8-17 22:00
重写加调用可能能简化点代码。
[Java] 纯文本查看 复制代码
package demos;

import java.util.*;

//定义引用数据类
class Person{
        String name;
        int age;        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }
        //重写toString方法,不然输出的是内存地址
        public String toString() {               
                return name+"  "+age+"岁";        }
}
//重写比较器
class MyComparator implements Comparator<Person>{
        public int compare(Person o1, Person o2) {               
                return o1.age-o2.age;
        }       
}
public class Demo2 {
        public static void main(String[] args) {
                Collection<Person> list = new ArrayList<Person>();
                list.add(new Person("小王", 21));
                list.add(new Person("王叔叔", 36));
                list.add(new Person("王爷爷", 68));
                list.add(new Person("宝宝", 3));
                System.out.println(list);
                //获取自定义的比较器
                MyComparator compare = new MyComparator();
                System.out.println("年纪最大的是:"+Collections.max(list,compare));
        }
}

作者: luliang    时间: 2016-8-17 22:45
恩 这个可以
作者: 冯潜001    时间: 2016-8-17 23:12
赞一个。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2