练习1.
1)创建一个ArrayList集合对象,并为这个集合添加元素(元素是Student)
2)采用前面介绍的两种方式获取 M合中的对象
class Student{
String name;
int age;
double score;
}
package pro_0416_homework;
/**
* 练习1.
1)创建一个ArrayList集合对象,并为这个集合添加元素(元素是Student)
2)采用前面介绍的两种方式获取 M合中的对象
class Student{
String name;
int age;
double score;
}
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class HomeWork01
{
public static void main(String[] args)
{
List<Student> list=new ArrayList<>();
list.add(new Student("张三",18,66));
list.add(new Student("李四",19,80));
System.out.println(list.toString());
//遍历方法一
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i)+"\t");
}
System.out.println();
//遍历方法二Iterator迭代器
Iterator<Student> it=list.iterator();
while(it.hasNext())
{
System.out.print(it.next()+"\t");
}
}
}
class Student
{
String name;
int age;
double score;
public Student(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student[name=" + name + ", age=" + age + ", score=" + score + "]";
}
}
练习2
1)使用LinkedList来模拟一个队列(先进先出的特性) .拥有:
-放入对象的方法void put(Object o)
-取出对象的方法Object get()
-判断队列当中是否为空的方法boolean isEmpty ()
并且,编写测试代码,验证你的队列是否正确。
package pro_0416_homework;
import java.util.LinkedList;
import java.util.List;
/**
* 练习2
1)使用LinkedList来模拟一个队列(先进先出的特性) .拥有:
-放入对象的方法void put(Object o)
-取出对象的方法Object get()
-判断队列当中是否为空的方法boolean isEmpty ()
并且,编写测试代码,验证你的队列是否正确。
*/
public class HomeWork02
{
public static void main(String[] args)
{
Duilie d=new Duilie();
System.out.println(d.isEmpty());
d.put("a");
d.put("b");
System.out.println(d.toString());
/*System.out.println(d.get());
System.out.println(d.get());*/
while(!d.isEmpty())
{
System.out.println(d.get());
}
}
}
class Duilie
{
private LinkedList<Object> list;
public Duilie()
{
list =new LinkedList<>();
}
public void put(Object o)
{
list.addLast(o);
}
public Object get()
{
return list.remove();
}
public boolean isEmpty()
{
if(list.isEmpty())
{
return true;
}else {
return false;
}
}
@Override
public String toString() {
return "Duilie [list=" + list + "]";
}
}
练习1:
1、生成10个随机数,值在100到200之间;
2、将这十个数存入HashSet集合中(有可能集合的长度小于10)。
3、将这个HashSet集合转换成ArrayList集合
4、重新为ArrayList集合排序,按照从小到大的顺序;
5、遍历该集合;
package pro_0416_homework;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
/**
* 练习1:
1、生成10个随机数,值在100到200之间;
2、将这十个数存入HashSet集合中(有可能集合的长度小于10)。
3、将这个HashSet集合转换成ArrayList集合
4、重新为ArrayList集合排序,按照从小到大的顺序;
5、遍历该集合;
*/
public class HomeWork03
{
public static void main(String[] args)
{
Set<Integer> set=new HashSet<>(10);
for(int i=0; i<10;i++)
{
set.add((int)((Math.random())*101+100));//将这十个数存入HashSet集合中
}
System.out.println(set.toString());
ArrayList<Integer> arrlist=new ArrayList<>(set);//HashSet集合转换成ArrayList集合
System.out.println(arrlist.toString());
Collections.sort(arrlist);//按照从小到大的顺序
System.out.println(arrlist.toString());
//遍历
for(int i=0;i<arrlist.size();i++)
{
System.out.print(arrlist.get(i)+"\t");
}
}
}
练习2:
创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;
并用两种方法遍历该集合
package pro_0416_homework;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 练习2:
创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;
并用两种方法遍历该集合
*/
public class HomeWork04
{
public static void main(String[] args)
{
List<Object> list=new ArrayList<>();
String letter="abcdefghijkl中国opqrstuvwx飞z0123456789";
for(int i=0;i<12;i++)
{
list.add(letter.charAt((int)(Math.random()*letter.length())));
}
System.out.println(list.toString());
list.add(1, "2号位");
System.out.println(list.toString());
System.out.println("5号位元素:"+list.get(4));
System.out.println("删除的6号位元素是:"+list.remove(5));
System.out.println(list.toString());
list.set(6, "修改7号位");
System.out.println(list.toString());
//遍历方式一
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i)+"\t");
}
System.out.println();
//遍历方式二
Iterator<Object> it=list.iterator();
while(it.hasNext())
{
System.out.print(it.next()+"\t");
}
System.out.println();
//遍历方式三
for(Object li:list) {
System.out.print(li+"\t");
}
}
}
练习3:
已知有一个Worker 类如下:
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。
6) 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
package pro_0416_homework;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 练习3:
已知有一个Worker 类如下:
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。
6) 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
*/
public class HomeWork05
{
public static void main(String[] args)
{
List<Worker> list=new ArrayList<>();
list.add(new Worker("zhang3",18,3000));
list.add(new Worker("li4",25,3500));
list.add(new Worker("wang5",22,3200));
System.out.println(list.toString());
/*list.add(1, new Worker("zhao6",24,3300));
System.out.println(list.toString());*/
/*int q=list.indexOf(new Worker("li4",25,3500));//得到li4的下标(因为重写了equals可以判断值相等)
//System.out.println(q);//1
list.add(q, new Worker("zhao6",24,3300));*/
System.out.println("===2===");
int index=0;
for(int i=0;i<list.size();i++)
{
if("li4".equals(list.get(i).getName()))
{
index=i;
}
}
list.add(index, new Worker("zhao6",24,3300));
System.out.println(list.toString());
/*list.remove(3);
System.out.println(list.toString());方法错误*/
System.out.println("====3====");
index=0;
for(int i=0;i<list.size();i++)
{
if("wang5".equals(list.get(i).getName()))
{
index=i;
}
}
list.remove(index);
System.out.println(list.toString());
//for循环
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i)+"\t");
}
System.out.println();
//迭代
Iterator<Worker> it=list.iterator();
while(it.hasNext())
{
Worker w=it.next();
w.work();
//System.out.print(it.next()+"\t");
}
list.add(new Worker("li4",25,3500));
System.out.println(list.get(2).equals(new Worker("li4",25,3500)));
}
}
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");
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
long temp;
temp = Double.doubleToLongBits(salary);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
{
return true;
}
if (obj == null)
{
return false;
}
if(obj instanceof Worker)
{
Worker c=(Worker)obj;
return this.name.equals(c.name) && this.age==c.age && this.salary==c.salary;
}
return false;
}
@Override
public String toString() {
return "Worker[age=" + age + ", name=" + name + ", salary=" + salary + "]";
}
}
练习四:已知有十六支男子足球队参加2008北京奥运会。写一个程序,
* 把这16 支球队随机分为4 个组并采用两种方式遍历输出。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,
中国,新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
package pro_0416_homework;
import java.util.ArrayList;
import java.util.List;
/**
* 练习四:已知有十六支男子足球队参加2008北京奥运会。写一个程序,
* 把这16 支球队随机分为4 个组并采用两种方式遍历输出。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,
中国,新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
*/
public class HomeWork06
{
public static void main(String[] args)
{
List<String> list=new ArrayList<>();
list.add("科特迪瓦");
list.add("阿根廷");
list.add("澳大利亚");
list.add("塞尔维亚");
list.add("荷兰");
list.add("尼日利亚");
list.add("日本");
list.add("美国");
list.add("中国");
list.add("新西兰");
list.add("巴西");
list.add("比利时");
list.add("韩国");
list.add("喀麦隆");
list.add("洪都拉斯");
list.add("意大利");
System.out.println(list.toString());
for(int i=1;i<=4;i++)
{
System.out.print("第"+i+"组: ");
for(int j=0;j<4;j++)
{
int k=(int)(Math.random()*list.size());//生成4个随机数
System.out.print(list.remove(k)+"\t");//移除掉
//System.out.println(k);
}
System.out.println();
}
}
}
练习五:有如下Student 对象,
private String name;
private int age;
private int score;
private String classNum;
其中,classNum 表示学生的班号,例如“class05”。 有如下
List list = new ArrayList();
list.add(new Student1("张三", 18, 100, "class05"));
list.add(new Student1("李四", 22, 70, "class04"));
list.add(new Student1("王五", 25, 90, "class05"));
list.add(new Student1("赵六", 30, 80 , "class05"));
list.add(new Student1("田七", 28, 66, "class06"));
list.add(new Student1("丁一", 24, 100, "class04"));
在这个list 的基础上,完成下列要求:
1) 计算所有学生的平均年龄
2) 计算各个班级的平均分
package pro_0416_homework;
import java.util.ArrayList;
import java.util.List;
public class HomeWork07
{
public static void main(String[] args)
{
List<Student1> list = new ArrayList<>();
list.add(new Student1("张三", 18, 100, "class05"));
list.add(new Student1("李四", 22, 70, "class04"));
list.add(new Student1("王五", 25, 90, "class05"));
list.add(new Student1("赵六", 30, 80 , "class05"));
list.add(new Student1("田七", 28, 66, "class06"));
list.add(new Student1("丁一", 24, 100, "class04"));
System.out.println(list.toString());
int sumage=0;
int sco04=0;
int sco05=0;
int sco06=0;
int sum04=0;
int sum05=0;
int sum06=0;
for(int i=0;i<list.size();i++)
{
sumage+=list.get(i).getAge();
String classs=list.get(i).getClassNum();
if(classs=="class04")
{
sum04++;
sco04+= list.get(i).getScore();
}
if(classs=="class05")
{
sum05++;
sco05+=list.get(i).getScore();
}
if(classs=="class06")
{
sum06++;
sco06+=list.get(i).getScore();
}
}
System.out.println("所有学生的平均年龄:"+sumage/list.size());
System.out.println("class04班平均分:"+sco04/sum04);
System.out.println("class05班平均分:"+sco05/sum05);
System.out.println("class06班平均分:"+sco06/sum06);
}
}
class Student1
{
private String name;
private int age;
private int score;
private String classNum;
public Student1(String name, int age, int score, String classNum) {
super();
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 "Student1[name=" + name + ", age=" + age + ", score=" + score + ", classNum=" + classNum + "]";
}
}
方式二
package pro_0416_homework;
import java.util.ArrayList;
import java.util.List;
/**
* 练习五:有如下Student 对象,
private String name;
private int age;
private int score;
private String classNum;
其中,classNum 表示学生的班号,例如“class05”。 有如下
List list = new ArrayList();
list.add(new Student007("张三", 18, 100, "class05"));
list.add(new Student007("李四", 22, 70, "class04"));
list.add(new Student007("王五", 25, 90, "class05"));
list.add(new Student007("赵六", 30, 80 , "class05"));
list.add(new Student007("田七", 28, 66, "class06"));
list.add(new Student007("丁一", 24, 100, "class04"));
在这个list 的基础上,完成下列要求:
1) 计算所有学生的平均年龄
2) 计算各个班级的平均分
*/
public class HomeWork007
{
public static void main(String[] args)
{
List<Student007> list = new ArrayList<>();
list.add(new Student007("张三", 18, 100, "class05"));
list.add(new Student007("李四", 22, 70, "class04"));
list.add(new Student007("王五", 25, 90, "class05"));
list.add(new Student007("赵六", 30, 80 , "class05"));
list.add(new Student007("田七", 28, 66, "class06"));
list.add(new Student007("丁一", 24, 100, "class04"));
System.out.println(list.toString());
//计算所有学生的平均年龄
int sumage=0;
for(int i=0;i<list.size();i++)
{
sumage+=list.get(i).getAge();
}
System.out.println("所有学生的平均年龄:"+sumage/list.size());
//计算各个班级的平均分
System.out.println("class04班平均分:"+ avgScore("class04",list));
System.out.println("class05班平均分:"+ avgScore("class05",list));
System.out.println("class06班平均分:"+ avgScore("class06",list));
}
public static double avgScore(String className,List<Student007> list)
{
double sumScore=0;
int len=list.size();
int count=0;
for(int i=0;i<len;i++)
{
if(list.get(i).getClassNum()==className)
{
sumScore+=list.get(i).getScore();
count++;
}
}
return sumScore/count;
}
}
class Student007
{
private String name;
private int age;
private int score;
private String classNum;
public Student007(String name, int age, int score, String classNum) {
super();
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 "Student007[name=" + name + ", age=" + age + ", score=" + score + ", classNum=" + classNum + "]";
}
}
练习六:(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。
package pro_0416_homework;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 练习六:(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。
*/
public class HomeWork08
{
public static void main(String[] args)
{
/*List<Object> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add(5);
list.add(66);*/
List<Object> list=Arrays.asList("张三","李四",5,66);
System.out.println(list.toString());
HomeWork08.reverseList(list);
HomeWork08.reverseList2(list);
}
//方法一
public static void reverseList(List<Object> list)
{
List<Object> newlist=new ArrayList<>();
int size = list.size();
for(int i=0;i<size;i++)
{
newlist.add(list.get(size-1-i));
}
System.out.println(newlist.toString());
}
//方法二
public static void reverseList2(List<Object> list)
{
int size = list.size();
List<Object> str=new ArrayList<>();
for(int x=0,y=size-1;x<y;x++,y--)
{
str.add(list.get(x));
list.set(x, list.get(y));
list.set(y, str.remove(0));
}
System.out.println(list.toString());
}
}