List应用举例

1、集合的嵌套遍历

学生类:

package listexercise;
/**
 * Created by gao on 15-12-9.
 */
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    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;
    }
}

测试类:

package listexercise;
import java.util.ArrayList;
/**
 * Created by gao on 15-12-16.
 */
/*
 * 集合的嵌套遍历
 * 需求:
 *         我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student>
 *         但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。
 *         而我现在有多个ArrayList<Student>。也要用集合存储,怎么办呢?
 *         就是这个样子的:ArrayList<ArrayList<Student>>
 */
public class ListExercise01 {
    public static void main(String[] args) {
        // 创建大集合
        ArrayList<ArrayList<Student>> bigArrayList = new ArrayList<ArrayList<Student>>();
        // 创建第一个班级的学生集合
        ArrayList<Student> firstArrayList = new ArrayList<Student>();
        // 创建学生
        Student s1 = new Student("唐僧", 30);
        Student s2 = new Student("孙悟空", 29);
        Student s3 = new Student("猪八戒", 28);
        Student s4 = new Student("沙僧", 27);
        Student s5 = new Student("白龙马", 26);
        // 学生进班
        firstArrayList.add(s1);
        firstArrayList.add(s2);
        firstArrayList.add(s3);
        firstArrayList.add(s4);
        firstArrayList.add(s5);
        // 把第一个班级存储到学生系统中
        bigArrayList.add(firstArrayList);
        // 创建第二个班级的学生集合
        ArrayList<Student> secondArrayList = new ArrayList<Student>();
        // 创建学生
        Student s11 = new Student("诸葛亮", 30);
        Student s22 = new Student("司马懿", 28);
        Student s33 = new Student("周瑜", 26);
        // 学生进班
        secondArrayList.add(s11);
        secondArrayList.add(s22);
        secondArrayList.add(s33);
        // 把第二个班级存储到学生系统中
        bigArrayList.add(secondArrayList);
        // 创建第三个班级的学生集合
        ArrayList<Student> thirdArrayList = new ArrayList<Student>();
        // 创建学生
        Student s111 = new Student("宋江", 40);
        Student s222 = new Student("吴用", 35);
        Student s333 = new Student("高俅", 30);
        Student s444 = new Student("李师师", 22);
        // 学生进班
        thirdArrayList.add(s111);
        thirdArrayList.add(s222);
        thirdArrayList.add(s333);
        thirdArrayList.add(s444);
        // 把第三个班级存储到学生系统中
        bigArrayList.add(thirdArrayList);
        // 遍历集合
        for (ArrayList<Student> array : bigArrayList) {
            for (Student s : array) {
                System.out.println(s.getName() + "---" + s.getAge());
            }
            System.out.println("---------------------");
        }
    }
}

输出结果:

唐僧---30

孙悟空---29

猪八戒---28

沙僧---27

白龙马---26

---------------------

诸葛亮---30

司马懿---28

周瑜---26

---------------------

宋江---40

吴用---35

高俅---30

李师师---22

---------------------

2、获取10个1-20之间的随机数,要求不能重复

package listexercise;
import java.util.ArrayList;
import java.util.Random;
/**
 * Created by gao on 15-12-16.
 */
/*
 * 获取10个1-20之间的随机数,要求不能重复
 *
 * 用数组实现,但是数组的长度是固定的,长度不好确定。
 * 所以我们使用集合实现。
 *
 * 分析:
 *         A:创建产生随机数的对象
 *         B:创建一个存储随机数的集合。
 *         C:定义一个统计变量。从0开始。
 *         D:判断统计遍历是否小于10
 *             是:先产生一个随机数,判断该随机数在集合中是否存在。
 *                     如果不存在:就添加,统计变量++。
 *                     如果存在:就不搭理它。
 *             否:不搭理它
 *         E:遍历集合
 */
public class ListExercise02 {
    public static void main(String[] args) {
        // 创建产生随机数的对象
        Random r = new Random();
        // 创建一个存储随机数的集合。
        ArrayList<Integer> array = new ArrayList<Integer>();
        // 定义一个统计变量。从0开始。
        int count = 0;
        // 判断统计遍历是否小于10
        while (count < 10) {
            //先产生一个随机数
            int number = r.nextInt(20) + 1;
            //判断该随机数在集合中是否存在。
            if (!array.contains(number)) {
                //如果不存在:就添加,统计变量++。
                array.add(number);
                count++;
            }
        }
        for (int x : array) {
            System.out.print(x + "    ");
        }
    }
}

输出结果:

15    6    10    14    11    18    12    1    7    5

3、键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值

package listexercise;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
/**
 * Created by gao on 15-12-16.
 */
/*
 * 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
 *
 * 分析:
 *         A:创建键盘录入数据对象
 *         B:键盘录入多个数据,我们不知道多少个,所以用集合存储
 *         C:以0结束,这个简单,只要键盘录入的数据是0,我就不继续录入数据了
 *         D:把集合转成数组
 *         E:对数组排序
 *         F:获取该数组中的最大索引的值
 */
public class ListExercise03 {
    public static void main(String[] args) {
        // 创建键盘录入数据对象
        Scanner sc = new Scanner(System.in);
        // 键盘录入多个数据,我们不知道多少个,所以用集合存储
        ArrayList<Integer> array = new ArrayList<Integer>();
        // 以0结束,这个简单,只要键盘录入的数据是0,我就不继续录入数据了
        while (true) {
            System.out.println("请输入数据:");
            int number = sc.nextInt();
            if (number != 0) {
                array.add(number);
            } else {
                break;
            }
        }
        // 把集合转成数组
        Integer[] i = new Integer[array.size()];
        // Integer[] ii = array.toArray(i);  //i和ii都是同一个地址
        array.toArray(i);
        // 对数组排序
        // public static void sort(Object[] a)
        Arrays.sort(i);
        // 获取该数组中的最大索引的值
        System.out.println("输入数组是:" + array.toString() + ";最大值是:" + i[i.length - 1]);
    }
}

输出结果:

请输入数据:

123

请输入数据:

26

请输入数据:

89

请输入数据:

255

请输入数据:

26

请输入数据:

30

请输入数据:

0

输入数组是:[123, 26, 89, 255, 26, 30];最大值是:255

时间: 2024-10-29 04:35:18

List应用举例的相关文章

JavaSE-接口应用举例

package com.btp.t2; /* * 接口应用的举例 */ public class TestUSB { public static void main(String[] args) { new Computer().doWork(new Printer()); new Computer().doWork(new Flash()); //实现接口的匿名类的对象 USB phone=new USB(){ @Override public void start() { // TODO 自

veridata实验举例(3)验证veridata查找出insert操作导致的不同步现象

veridata实验举例(3)验证veridata查找出insert操作导致的不同步现象 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hostname gc1 g

C++多重继承中的虚继承和虚函数举例

上一篇虚继承举例:http://10638473.blog.51cto.com/10628473/1964414 本文将A类中的show()函数前加上virtual关键字. //多重继承 #include <iostream> using namespace std; class A { public:     int a;     A(int a=0):a(a)     {         cout<<"A基类A::A()"<<endl;     

c++局部变量经典举例

局部变量: 在函数内部声明的变量为局部变量,局部变量的意思即该变量只存活在该函数中,假如该函数调用结束,那么该变量的寿命也结束了. 举例: #include<iostream> using namespace std; void swap(int ,int );//两个参数变量可以省略 int main() { int x=3,y=4; cout<<"在main函数中,调用swap函数之前,x的值为"<<x<<",y的值为:&q

cookie使用举例(添加购物车商品_移除购物车商品)

之前介绍过cookie和session的原理和区别.下面举例说明一下cookie在实际项目中的使用.使用cookie实现购物车功能: 1.往购物车添加商品 2.从购物车里移除商品 主要是要点是:以产品id作为主键进行判断.如果这个添加的产品id信息已经在cookie里面存在,则添加失败(这里不考虑同一个商品重复添加多个的问题.因为只是cookie的简单举例):否则则把该产品的信息保存在cookie里面.因此存在用户手动清楚cookie的情况,所以需要判断: 1 if(cookieMap.cont

聚集索引与非聚集索引的用法举例与使用注意

聚集索引 用法举例 小明需要查找一个人的姓名,知道他在公司的营销部门的1010办公室的4号座位.这个时候如果需要专门为小明建一个聚集索引表就是,以公司部门表内部门名称排序,再以房间总表序号排序,最后以房间详细表的座位表排序,这样就可以最快的找到他要找的人 聚集索引类似于一个字典,我们知道拼音来寻找字,首先我们知道字音节的首字母,从按a-z排序的字典中找到这个字首字母所在的区域,再从这个区域找到韵母所在的区域,当然韵母在字典中也有顺序,最后就可以找到我们想要的字了 注意事项 限制原则 每个表只能有

shell-script的简单举例

#!/bin/bash #defind the path PATH=/usr/local export PATH read -p "please input your first name:" firstname reap -p "please input your last name:" lastname echo -e "\nyour name is: $firstname $lastname" #use date create file r

对拍程序讲解及源码举例

对拍程序 一.介绍 在做题或者正式比赛过程中总会把水题做水做乱,但因为样例有坑所以直接过了样例,然后拿去评测结果发现全WA.那如何在这种情况下检查自己程序或算法的正确性呢?对拍是一个简便省事的方案. 所谓“对拍”,顾名思义,就是让两者相互比对.所谓“两者”,一是你要测试的程序,二是一个答案在该程序在一定范围(时间/空间)内结果必定正确的程序(一般是用暴力求解的程序). 两个程序准备好编译好了以后,就可以开始准备测试用的输入样例了.但是输入样例要是人为准备起来的话肯定浪费时间还费脑,更别提在正式比

CentOS 文件通配符;预定义字符;简单举例

文件通配符使用举例 *            匹配零个或者多个字符 ~]# ls x*      比如搜索以x开头的文件或者目录 ?            匹配任何单个字符 ~]# ls x?      搜索以x打头的文件或者目录  单个字符补上 ^            取得反向值 ~            当前用户家目录 ~]# cd            回到家目录 ~username    ~]# cd ~makangbo  回到用户家目录 ~]# ll ~/         也可以访问

数据结构算法C语言实现(七)--- 3.1 的线性实现及应用举例

一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 1 //3_1.h 2 /** 3 author:zhaoyu 4 email:[email protected] 5 date:2016-6-7 6 note:realize my textbook <<数据结构(C语言版)>> 7 */ 8 //Page 46 9 10 #ifndef _3_1_H_ 11 #define _3_1_H_ 12