黑马程序员技术交流社区

标题: Collection\迭代器02 [打印本页]

作者: _J2EE_LiXiZhen    时间: 2017-11-13 23:49
标题: Collection\迭代器02
自定义人类:包含姓名,年龄,**属性.私有成员变量,生成无参,有参构造方法,生成get/set方法.创建5个人放到ArrayList中.
使用迭代器获取每个人的信息.找出最高的人,最矮的人并输出最高人和最矮人的信息.打印格式如下:最高的人是张三,**1.80. 最矮的人是李四,**1.60

[Java] 纯文本查看 复制代码
//自定义人类:包含姓名,年龄,**属性.私有成员变量,生成无参,有参构造方法,生成get/set方法

public class Person {
        //姓名
        private String name;
        //年龄
        private int age;
        //**
        private double height;
       
        public Person() {
                // TODO Auto-generated constructor stub
        }

        public Person(String name, int age, double height) {
                super();
                this.name = name;
                this.age = age;
                this.height = height;
        }

        //get/set
        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        public double getHeight() {
                return height;
        }

        public void setHeight(double height) {
                this.height = height;
        }
}

public class Test {
        public static void main(String[] args) {
                // 创建键盘录入对象
                Scanner sc = new Scanner(System.in);
                // 创建ArrayList集合
                Collection<Person> coll = new ArrayList<Person>();

                // 循环录入人的信息
                for (int i = 0; i < 5; i++) {
                        // 提示录入
                        System.out.println("请输入第" + (i + 1) + "个人的姓名");
                        String name = sc.next();
                        System.out.println("请输入第" + (i + 1) + "个人的年龄");
                        int age = sc.nextInt();
                        System.out.println("请输入第" + (i + 1) + "个人的**");
                        double height = sc.nextDouble();
                        // 存入集合
                        coll.add(new Person(name, age, height));
                }

                // 迭代器遍历
                Iterator<Person> it = coll.iterator();
                while (it.hasNext()) {
                        Person p = it.next();
                        System.out.println("姓名: " + p.getName() + "  年龄: " + p.getAge() + "  **: " + p.getHeight());
                }

                // coll向下转型
                ArrayList<Person> arr = (ArrayList<Person>) coll;
                // 定义最高**
                double maxHeight = arr.get(0).getHeight();
                // 定义最矮**
                double minHeight = arr.get(0).getHeight();
                // 定义最大索引
                int maxIndex = 0;
                // 定义最小索引
                int minIndex = 0;

                // 循环集合找出最大最小**的Person对象
                for (int i = 1; i < arr.size(); i++) {
                        // 最大**
                        if (maxHeight < arr.get(i).getHeight()) {
                                maxHeight = arr.get(i).getHeight();
                                maxIndex = i;
                        }
                        // 最小**
                        if (minHeight > arr.get(i).getHeight()) {
                                minHeight = arr.get(i).getHeight();
                                minIndex = i;
                        }
                }

                // 打印最大最小**的对象
                System.out.println("最高的人是: " + arr.get(maxIndex).getName() + " **是: " + arr.get(maxIndex).getHeight() + "米");
                System.out.println("最矮的人是: " + arr.get(minIndex).getName() + " **是: " + arr.get(minIndex).getHeight() + "米");
        }
}





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