一 编程题【Collection集合、迭代器】
1.1 题目
请定义一个Collection类型的集合,存储以下字符串:
“JavaEE企业级开发指南”,”Oracle高级编程”,”MySQL从入门到精通”,
”Java架构师之路”
请编程实现以下功能:
Ø 使用迭代器遍历所有元素,并打印
Ø 使用迭代器遍历所有元素,筛选书名小于10个字符的,并打印;
Ø 使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印
Ø 如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。
(注意:以上功能写在一个main()方法中,但请单独实现)
public class Test2_1 {
public static void main(String[] args) {
//1.使用多态创建Collection集合
Collection<String> col = new ArrayList<>();
//2.添加元素
col.add("JavaEE企业级开发指南");
col.add("Oracle高级编程");
col.add("MySQL从入门到精通");
col.add("Java架构师之路");
//3.使用迭代器遍历所有元素,并打印
System.out.println("————————————————————使用迭代器遍历所有元素,并打印——————————————————————");
Iterator<String> iterator = col.iterator();
while(iterator.hasNext()) {
String book = iterator.next();
System.out.println(book);
}
//4.使用迭代器遍历所有元素,筛选书名小于10个字符的,并打印;
//注意要重新获取新的迭代器,旧的无法再次使用
System.out.println("—————————————————————用迭代器遍历所有元素,筛选书名小于10个字符的,并打印—————————————————————");
iterator = col.iterator();
while(iterator.hasNext()) {
String book = iterator.next();
if(book.length()<10) {//判断书名小于10个字符
System.out.println(book);
}
}
//5.使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印
System.out.println("—————————————————————使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印—————————————————————");
iterator = col.iterator();
while(iterator.hasNext()) {
String book = iterator.next();
if(book.contains("Java")) {//判断书名是否包含Java字符
System.out.println(book);
}
}
//6.如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。
//题目要求要遍历两次,但是一次遍历其实也可以完成
System.out.println("—————————————————————如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。—————————————————————");
iterator = col.iterator();
while(iterator.hasNext()) {
String book = iterator.next();
if(book.contains("Oracle")) {//判断书名是否包含Oracle字符
//注意此处不要使用col.remove(book); 会有异常的风险,而应该使用迭代器的remove()方法
iterator.remove();
} else {
System.out.println(book);
}
}
}
}
二 编程题【增强for】
2.1 题目
请定义一个Collection类型的集合,存储以下分数信息:
88.5,39.2,77.1,56.8,89,99,59.5
请编程实现以下功能:
Ø 使用增强for遍历所有元素,并打印
Ø 使用增强for遍历所有元素,打印不及格的分数;
Ø 使用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果。
Ø 使用增强for遍历所有元素,求出最高分,并打印;
(注意:以上所有功能写在一个main()方法中,但请单独实现)
public class Test3_1 {
public static void main(String[] args) {
//1.使用多态创建Collection集合
Collection<Double> col = new ArrayList<>();
//2.添加元素
col.add(88.5);
col.add(39.2);
col.add(77.1);
col.add(56.8);
col.add(89.0);
col.add(99.0);
col.add(59.5);
// 使用增强for遍历所有元素,并打印
System.out.println("————————————————————使用增强for遍历所有元素,并打印——————————————————————");
for (Double score : col) {
System.out.println(score);
}
// 使用增强for遍历所有元素,打印不及格的分数;
System.out.println("————————————————————使用增强for遍历所有元素,打印不及格的分数——————————————————————");
for (Double score : col) {
if(score<60) {
System.out.println(score);
}
}
// 使用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果。
//定义变量用于统计不及格分数的数量
System.out.println("————————————————————用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果——————————————————————");
int failNum = 0;
//定义变量用于统计不及格分数的总分,
double failSum = 0;
for (Double score : col) {
if(score<60) {
//统计人数与总分
failNum++;
failSum+=score;
}
}
//不及格的平均分=不及格总分/不及格数量
double failAvg = failSum/failNum;
System.out.println("不及格的平均分:"+failAvg);
// 使用增强for遍历所有元素,求出最高分,并打印;
System.out.println("————————————————————使用增强for遍历所有元素,求出最高分,并打印——————————————————————");
//定义变量记录最高分
double max = 0;
for (Double score : col) {
if(score>max) { //每次取出的分数如果比max大,就赋值给它
max = score;
}
}
System.out.println("最高分:"+max);
}
}
三 编程题【泛型】
3.1 题目
有以下类结构:
人员类(Person):
|–学生类(Student)
|–Java学生类(JavaStudent)
|–UI学生类(UIStudent)
|–教师类(Teacher)
|–Java教师类(JavaTeacher)
|–UI教师类(UITeacher)
要求:
Ø 请按上述要求定义类,并实现继承关系即可(不需要定义类成员)
Ø 请按以下格式和要求定义测试类和方法:
public class Test4_1{
public static void main(String[] args){
ArrayList list1 = new ArrayList<>();
ArrayList list2 = new ArrayList<>();
ArrayList list3 = new ArrayList<>();
ArrayList list4 = new ArrayList<>();
ArrayList list5 = new ArrayList<>();
ArrayList list6 = new ArrayList<>();
ArrayList list7 = new ArrayList<>();
ArrayList list8 = new ArrayList<>();
//请测试哪些集合可以调用print1()方法
//请测试哪些集合可以调用print2()方法
//请测试哪些集合可以调用print3()方法
//请测试哪些集合可以调用print4()方法
}
//要求:参数可以接收任何泛型的ArrayList参数
public static void print1(ArrayList<______________> list){
}
//要求:参数可以接收任何Person及其子类泛型的ArrayList参数
public static void print2(ArrayList<______________> list){
}
//要求:参数可以接收任何Student及其子类泛型的ArrayList参数
public static void print3(ArrayList<______________> list){
}
//要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数
public static void print4(ArrayList<______________> list){
}
}
各个基本类
public class Person {
}
public class Student extends Person {
}
public class JavaStudent extends Student{
}
public class UIStudent extends Student{
}
public class Teacher extends Person {
}
public class JavaTeacher extends Teacher{
}
public class UITeacher extends Teacher{
}
public class Test4_1 {
public static void main(String[] args){
ArrayList<String> list1 = new ArrayList<>();
ArrayList<Person> list2 = new ArrayList<>();
ArrayList<Student> list3 = new ArrayList<>();
ArrayList<JavaStudent> list4 = new ArrayList<>();
ArrayList<UIStudent> list5 = new ArrayList<>();
ArrayList<Teacher> list6 = new ArrayList<>();
ArrayList<JavaTeacher> list7 = new ArrayList<>();
ArrayList<UITeacher> list8 = new ArrayList<>();
//请测试哪些集合可以调用print1()方法
print1(list1);
print1(list2);
print1(list3);
print1(list4);
print1(list5);
print1(list6);
print1(list7);
print1(list8);
//请测试哪些集合可以调用print2()方法
//print2(list1);
print2(list2);
print2(list3);
print2(list4);
print2(list5);
print2(list6);
print2(list7);
print2(list8);
//请测试哪些集合可以调用print3()方法
//print3(list1);
//print3(list2);
print3(list3);
print3(list4);
print3(list5);
//print3(list6);
//print3(list7);
//print3(list8);
//请测试哪些集合可以调用print4()方法
//print4(list1);
print4(list2);
print4(list3);
print4(list4);
//print4(list5);
//print4(list6);
//print4(list7);
//print4(list8);
}
//要求:参数可以接收任何泛型的ArrayList参数
public static void print1(ArrayList<?> list){
}
//要求:参数可以接收任何Person及其子类泛型的ArrayList参数
public static void print2(ArrayList<? extends Person> list){
}
//要求:参数可以接收任何Student及其子类泛型的ArrayList参数
public static void print3(ArrayList<? extends Student> list){
}
//要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数
public static void print4(ArrayList<? super JavaStudent> list){
}
}