Java基础练习(十)ArrayList的使用

1、存放5个学生的成绩【成绩值自己设定】,获得成绩之和,平均成绩,最小成绩,最大成绩。
import java.util.Arrays;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        List<Integer> list;
        list=Arrays.asList(50,30,24,90,45);
        int sum=0;
        double avg=0;
        int max=list.get(0);
        int min=list.get(0);
        for (Integer i:list){
            sum+=i;
            if (max<i){
                max=i;
            }
            if (min>i){
                min=i;
            }
        }
        System.out.println(sum+","+sum/list.size()+","+max+","+min);
    }
}
2、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?
import java.util.*;

public class Test02 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(50);
        list.add(60);
        list.add(70);
        list.add(80);
        list.add(90);
        list.add(100);
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(40);

//      排序后删除第一个和最后一个
        Collections.sort(list);
        list.remove(0);
        list.remove(list.size()-1);
        
        int sum = 0;
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer integer = iterator.next();
            sum += integer;
        }
        System.out.println(sum / list.size());
    }
}
3、现在有:

List oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
要求将以上集合中值为0的项去掉。

import java.util.*;

public class Test03 {
    public static void main(String[] args) {
//        List oldArr = Arrays.asList(1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5);
//集合工具类Arrays转为集合的不能按下标删除
        List oldArr = new ArrayList();

        oldArr.add(1);
        oldArr.add(0);
        oldArr.add(0);
        oldArr.add(0);
        oldArr.add(1);
        oldArr.add(0);
        oldArr.add(1);
        oldArr.add(1);

        //第一种方法
//        for (int i = oldArr.size()-1; i >=0 ; i--) {
//            if((int)oldArr.get(i)==0){
//                oldArr.remove(i);
//            }
//        }
//        oldArr.forEach((o)->{
//            System.out.println(o);
//        });

//          第二种方法
       while (oldArr.contains(0)){
//           oldArr.remove((int) 0); int类型的0会被认为是索引下标
           oldArr.remove((Integer)0);
       }
        oldArr.forEach((o) -> {
            System.out.println(o);
        });
       
       //第三种方法
//        Set newArr= new HashSet();
//        //collection中的List与Map集合的区别之一就是:List能存储重复的元素,而Map中不能,将list中 元素加到Map中自动去重
//        oldArr.forEach((o)->{
//           newArr.add(o);
//        });
//        newArr.forEach((o)->{
//            System.out.println(o);
//        });
    }
}

4、现在给出两个List集合:

集合a:“1,7,9,11,13,15,17,19”
集合b:“2,4,6,8,10”
两个集合合并为集合c。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test04 {
    public static void main(String[] args) {
        List a = Arrays.asList(1,7,9,11,13,15,17,19);
        List b = Arrays.asList(2,4,6,8,10);
        List c=new ArrayList();
        for(Object o:a){
            c.add(o);
        }
        b.forEach((o)->{
            c.add(o);
        });
        for (int i = 0; i <c.size() ; i++) {
            System.out.print(c.get(i)+",");
        }
    }
}
5、有如下Student 对象,

private String name;

private int age;

private int score;

private String classNum;

其中,classNum 表示学生的班号,例如“class05”。 有如下List

List list = new ArrayList(); txt

list.add(new Student(“Tom”, 18, 100, “class05”));

list.add(new Student(“Jerry”, 22, 70, “class04”));

list.add(new Student(“Owen”, 25, 90, “class05”));

list.add(new Student(“Jim”, 30,80 , “class05”));

list.add(new Student(“Steve”, 28, 66, “class06”));

list.add(new Student(“Kevin”, 24, 100, “class04”));

在这个list 的基础上,完成下列要求:

1) 计算所有学生的平均年龄

2) 计算各个班级的平均分

3) 不分班排序,并输出学生信息。
排序规则:
按照成绩降序排列;
如果成绩相同,按照年龄升序排列;
如果成绩和年龄都相同,按照姓名降序排列。

Student:

public class Student {
    private String name;

    private int age;

    private int score;

    private String classNum;

    public Student(String name, int age, int score, String classNum) {
        this.name = name;
        this.age = age;
        this.score = score;
        this.classNum = classNum;
    }

    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 int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getClassNum() {
        return classNum;
    }

    public void setClassNum(String classNum) {
        this.classNum = classNum;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                ", classNum='" + classNum + '\'' +
                '}';
    }
}

测试:

import java.util.ArrayList;
import java.util.List;

public class Test05 {
    public static void main(String[] args) {
        List<Student> list = new ArrayList();

        list.add(new Student("Tom", 18, 100, "class05"));

        list.add(new Student("Jerry", 22, 70, "class04"));

        list.add(new Student("Owen", 25, 90, "class05"));

        list.add(new Student("Jim", 30,80 , "class05"));

        list.add(new Student("Steve", 28, 66, "class06"));

        list.add(new Student("Kevin", 24, 100, "class04"));

        int sumage=0;
        int sumsorce=0;

        for (Student student:list){
            sumage+=student.getAge();
            sumsorce+=student.getScore();
        }
        System.out.println("平均年龄为:"+sumage/list.size());
        System.out.println("平均分数为:"+sumsorce/list.size());

        sortStudent(list);

        for(Student student:list){
            System.out.println(student.toString());
        }

    }
    public static void sortStudent(List<Student> list){
       List<Student> list1;// 错误,不能新建一个集合来充当临时变量

        for (int i = 0; i <list.size()-1 ; i++) {
            for (int j = 0; j <list.size()-i-1 ; j++) {
                Student s1= list.get(j);
                Student s2= list.get(j+1);

                if(list.get(j).getScore()<list.get(j+1).getScore()){

                    // list.get(j)==s2; 集合赋值错误,使用对象解决问题
                    list.set(j,s2);
                    list.set(j+1,s1);

                } else if (list.get(j).getScore()==list.get(j+1).getScore()){

                    if (list.get(j).getAge()>list.get(j+1).getAge()){

                        list.set(j,s2);
                        list.set(j+1,s1);

                    }else  if(list.get(j).getAge()==list.get(j+1).getAge()){

                        if (list.get(j).getName().compareTo(list.get(j+1).getName())<0){
                            list.set(j,s2);
                            list.set(j+1,s1);
                        }
                    }
                }
            }

        }
    }
}
6、第六题(List)已知有一个Worker 类如下:

public class Worker

{ private int age;

private String name;

private double salary;

public Worker (){}

public Worker (String name, int age, double salary)

{ this.name = name;

this.age = age;

this.salary = salary; }

public int getAge() { return age; }

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

public String getName() { return name; }

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

public double getSalary(){ return salary; }

public void setSalary(double salary){ this.salary = salary; }

public void work(){

System.out.println(name + “ work”); } }

完成下面的要求

  1. 创建一个List,在List 中增加三个工人,基本信息如下:

姓名 年龄 工资

zhang3 18 3000

li4 25 3500

wang5 22 3200

  1. 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300

  2. 删除wang5 的信息

  3. 利用for 循环遍历,打印List 中所有工人的信息

  4. 利用迭代遍历,对List 中所有的工人调用work 方法。

Worker

public class Worker {
    private int age;
    private String name;
    private double salary;
    public Worker (){}

    public Worker (String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public int getAge() { return age; }

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

    public String getName() { return name; }

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

    public double getSalary(){ return salary; }

    public void setSalary(double salary){ this.salary = salary; }

    @Override
    public String toString() {
        return "Worker{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }

    public void work(){
        System.out.println(name + ":work");
    }
}

测试

package PracticeDisizhou.lx0804.lx06;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test06 {
    public static void main(String[] args) {

        Worker w1 = new Worker("zhang3", 18, 3000);
        Worker w2 = new Worker("li4", 25, 3500);
        Worker w3 = new Worker("wang5", 22, 3200);
        Worker w4 = new Worker("zhao6", 24, 3000);

        List<Worker> list = new ArrayList<>();
        list.add(w1);
        list.add(w2);
        list.add(w3);

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getName().equals("li4")) {
                list.add(i, w4);
                break;
                //添加后跳出循环,若不跳出会无线循环,因为lisi的下标改变为i+1了,下一个if依然会成立
            }
        }

        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getName().equals("wang5")){
                list.remove(i);
                break;
            }
        }

        for (Worker worker : list) {
            System.out.println(worker);
        }

        Iterator<Worker> iterator = list.iterator();
        while (iterator.hasNext()){
            Worker worker = iterator.next();
            worker.work();
        }
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值