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”); } }
完成下面的要求
- 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
-
在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
-
删除wang5 的信息
-
利用for 循环遍历,打印List 中所有工人的信息
-
利用迭代遍历,对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();
}
}
}