1. 填空
Collection 接口的特点是元素是___对象______;
List 接口的特点是元素__有___(有|无)顺序,___不可以___(可以|不可以)重复;Set 接口的特点是元素__无___(有|无)顺序,__可以____(可以|不可以)重复;
Map 接口的特点是元素是_键值对_____,其中_值____可以重复,____键__不可以重复。
2. (List)有如下代码
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(1, “Learn”);
list.add(1, “Java”);
printList(list);
}
public static void printList(List list){
System.out.prinltn(list);
}
}
要求:
1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容
2) 写出程序执行的结果
Hello Java Learn World
3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList 和
LinkedList 使用上有什么区别?实现上有什么区别?
List list = new LinkedList();
LinkedList(更适用于频繁的插入、删除操作)
4) 如果要把实现类由ArrayList 换为Vector,应该改哪里?ArrayList 和Vector 使
用上有什么区别?实现上有什么区别?
List list = new Vector();
Vector(古老的实现类、线程安全的,但效率要低于ArrayList)
3. (List)写出下面程序的运行结果
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(“Hello”);
li st.add(“Learn”);
list.remove(“Hello”);
list.remove(0);
for(int i = 0; i System.out.println(list.get(i)); } } } World Learn 4. (Set,List) import java.util.*; public class TestListSet{ public static void main(String args[]){ List list = new ArrayList(); list.add(“Hello”); list.add(“Learn”); list.add(“Hello”); list.add(“Welcome”); Set set = new HashSet(); set.addAll(list); System.out.println(set.size()); } } 选择正确答案A A.编译不通过 B.编译通过,运行时异常 C.编译运行都正常,输出3 D.编译运行都正常,输出4 5. (List)已知有一个Worker 类如下: public class Worker { private int age; private String name; private double salary; public Worker (){} public Worker (String name, int age, double salary){ https://www.sodocs.net/doc/7c13438375.html, = 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) { https://www.sodocs.net/doc/7c13438375.html, = 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 ArrayList L=new ArrayList(); L.add(new Worker(zhang3,18,3000)); L.add(new Worker(li4,25,3500)); L.add(new Worker(wang5,22,3200)); 2)在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 L.add(1,new Worker(zhao6,24,330)); 3)删除wang5 的信息 L.remove(3); 4)利用for 循环遍历,打印List 中所有工人的信息 先在Worker类中重写toString方法 for(int i=0;i Syso(L.get(i)); 5)利用迭代遍历,对List 中所有的工人调用work 方法。 Iterator it=L.iterator(); while(it.hasNext()){ System.out.println(it.next()); } 6)为Worker 类添加equals 方法 public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Worker other = (Worker) obj; if (age != other.age) return false; if (name == null) { if (https://www.sodocs.net/doc/7c13438375.html, != null) return false; } else if (!name.equals(https://www.sodocs.net/doc/7c13438375.html,)) return false; return true; 6. (Set,Hash 算法)为上一题的Worker 类,在添加完equals 方法的基础上,添加一个hashCode 方法。 public int hashCode(){ //1 } 有几种写法: 1)return 0; 2) int result = 0; if (name != null) result = name.hashCode(); return result + age; 3)return super.hashCode(); 现在要把Worker 类放入HashSet 中,并希望在HashSet 中没有重复元素,则下面说法正确的是:C A. 三种写法都正确 B. 1), 2)写法正确,2)效率更高 C. 2)写法正确,1),3)写法都不正确 7. (Set,Hash 算法,方法覆盖)代码改错 import java.util.*; class Worker{ String name; int age; double salary; public Worker(){} public Worker(String name, int age, double salary){ https://www.sodocs.net/doc/7c13438375.html, = name; this.age = age; this.salary = salary; } public int hashCode(){ //重写父类方法,权限不能小于父类 return name.hashCode() + age + salary; } public boolean equals(Worker w){ if (https://www.sodocs.net/doc/7c13438375.html, == name && w.salary == salary && w.age == age){ return true; }else return false; } } public class TestWorker{ public static void main(String args[]){ Set set = new HashSet(); set.add(new Worker(“tom”, 18, 2000)); set.add(new Worker(“tom”, 18, 2000)); set.add(0, new Worker(“jerry”, 18, 2000));// HashSet是无序的集合,不能在指定位置 添加 System.out.println(set.size()); } } 8. (Set,Hash 算法)在前面的Worker 类基础上,为Worker 类增加相应的方法,使得Worker放入HashSet 中时,Set 中没有重复元素。 并编写相应的测试代码。 9. (Set,Comparable 接口)在前面的Worker 类基础上,为Worker 类添加相应的代码,使得Worker 对象能正确放入TreeSet 中。并编写相应的测试代码。 注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再 比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例如:有三个工人,基本信息如下: 姓名年龄工资 zhang3 18 1500 li4 18 1500 wang5 18 1600 zhao6 17 2000 放入TreeSet 排序后结果为: zhao6 li4 zhang3 wang5 10. (Map)关于下列Map 接口中常见的方法 put 方法表示放入一个键值对,如果键已存在则________________,如果键不存在则 ______________。 remove 方法接受___个参数,表示__________________。 get 方法表示_______________________,get 方法的参数表示______,返回值表示_____。要想获得Map 中所有的键,应该使用方法___________,该方法返回值类型为_______。要想获得Map 中所有的值,应该使用方法___________,该方法返回值类型为_______。要想获得Map 中所有的键值对的集合,应该使用方法___________,该方法返回一个 _______类型所组成的Set。 11. (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 12. (Map)已知某学校的教学课程内容安排如下: 完成下列要求: 1)使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。 2)增加了一位新老师Allen 教JDBC 3)Lucy 改为教CoreJava 4)遍历Map,输出所有的老师及老师教授的课程 5)*利用Map,输出所有教JSP 的老师。 13. (泛型)使用泛型,改写第5 题 14. (泛型)使用泛型和Map.Entry 接口,改写第12 题的前4 问 15. *(List)写出下面程序的输出结果 import java.util.*; class MyClass{ int value; public MyClass(){} public MyClass(int value){ this.value = value; } public String toString(){ return “”+value; } } public class TestList{ public static void main(String args[]){ MyClass mc1 = new MyClass(10); MyClass mc2 = new MyClass(20); MyClass mc3 = new MyClass(30); List list = new ArrayList(); list.add(mc1); list.add(mc2); list.add(mc3); MyClass mc4 = (MyClass) list.get(1); mc4.value = 50; for(int i = 0; i System.out.println(list.get(i)); } } } 16. *(Set,HashSet,空指针)有下面代码 import java.util.*; class Student { int age; String name; public Student(){} public Student(String name, int age){ https://www.sodocs.net/doc/7c13438375.html, = name; this.age = age; } public int hashCode(){ return name.hashCode() + age; } public boolean equals(Object o){ if (o == null) return false; if (o == this) return true; if (o.getClass() != this.getClass()) return false; Student stu = (Student) o; if (https://www.sodocs.net/doc/7c13438375.html,.equals(name) && stu.age == age) return true; else return false; } } public class TestHashSet{ public static void main(String args[]){ Set set = new HashSet(); Student stu1 = new Student(); Stu dent stu2 = new Student(“Tom”, 18); Student stu3 = new Student(“Tom”, 18); set.add(stu1); set.add(stu2); set.add(stu3); System.out.println(set.size()); } } 下列说法正确的是: A. 编译错误 B. 编译正确,运行时异常 C. 编译运行都正确,输出结果为3 D. 编译运行都正确,输出结果为2 17. *(Set)有如下两个类(只写了类的属性,请自行添加相应的构造方法和get/set 方法) 要求,完善Worker 和Address 类,使得Worker 对象能够正确放入HashSet 中:即将Worker 放入HashSet 中时不会出现重复元素。并编写相应测试代码。 18. *(Map)在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1994 2002 读入“荷兰”,应当输出 没有获得过世界杯 19. *(Map)设计Account 对象如下: 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); li st.add(new Account(10.00, “1234”)); list.add(new Account(15.00, “5678”)); list.add(new Account(0, “1010”)); 要求把List 中的内容放到一个Map 中,该Map 的键为id,值为相应的Account 对象。 最后遍历这个Map,打印所有Account 对象的id 和余额。 20. *(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn reverseList(list); //调用reverseList 方法之后,list 为Learn World Hello 21. **(Map,Hash 算法)有如下代码: import java.util.*; class MyKey{ int keyValue; public MyKey(){} public MyKey(int value){ this.keyValue = value; } } class MyValue{ String value; public MyValue(){} public MyValue(String value){ this.value = value; } public String toString(){ return value; } } public class TestMap{ public static void main(String args[]){ Map map = new HashMap(); MyKey key1 = new MyKey(10); map.put(key1, new MyValue(“abc”)); map.put(new MyKey(10), new MyValue(“cde”)); System.out.println(map.get(key1)); System.out.println(map.size()); } } 写出该代码的输出结果。 22. **(Id,hashCode,equals)为Worker 类增加id 属性,用来唯一标识一个员工。即:如果员工的id 不同,则不管其姓名、年龄、工资是否相同,都认为是不同的员工。部分代码如下: class Worker{ private final Long id; private String name; private double salary; private int age; //构造方法… //get/set 方法… public boolean equals(Object obj){ //1 此处仅判断id 是否相同 } public int hashCode(){ //2 此处返回hashCode } } 要求: 1)完善构造方法和get/set 方法。要求自动分配Worker 的id 2)完善equals 方法。要求仅判断id 是否相同 3)//2 处,如果写成 return (int)(name.hashCode() + id.hashCode() + age + salary); 是否正确?为什么? 23. **(综合)有如下Student 对象 其中,classNum 表示学生的班号,例如“class05”。 有如下List List 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”)); 在这个list 的基础上,完成下列要求: 1)计算所有学生的平均年龄 2)计算各个班级的平均分 24. **(综合)已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。 注:参赛球队列表见附录 注2:使用Math.random 来产生随机数。 25. **(综合)写一个MyStack 类,表示“栈”这种数据结构。 栈在表示上,就如同一个单向开口的盒子,每当有新数据进入时,都是进入栈顶。其基 本操作为push 和pop。push 表示把一个元素加入栈顶,pop 表示把栈顶元素弹出。 示意图如下: 栈的特点:先进后出。 栈的基本操作: 1)push(Object o):表示把元素放入栈 2)Object pop():返回栈顶元素,并把该元素从栈中删除。如果栈为空,则返回null 值3)Object peek():返回栈顶元素,但不把该元素删除。如果栈为空,则返回null值。4)boolean isEmpty():判断该栈是否为空 5)int size():返回该栈中元素的数量 要求: 1)利用List,实现栈。 2)讨论:应当用ArrayList 作为实现类还是用LinkedList?为什么? 附录 1. 截止到2009 年为止,历届世界杯冠军 2. 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利 《金属塑性成形原理》习题(2)答案 一、填空题 1. 设平面三角形单元内部任意点的位移采用如下的线性多项式来表示: ,则单元内任一点外的应变可表示为=。 2. 塑性是指:在外力作用下使金属材料发生塑性变形而不破坏其完整性的能力。 3. 金属单晶体变形的两种主要方式有:滑移和孪生。 4. 等效应力表达式:。 5.一点的代数值最大的__ 主应力__ 的指向称为第一主方向,由第一主方向顺时针转所得滑移线即为线。 6. 平面变形问题中与变形平面垂直方向的应力σ z = 。 7.塑性成形中的三种摩擦状态分别是:干摩擦、边界摩擦、流体摩擦。8.对数应变的特点是具有真实性、可靠性和可加性。 9.就大多数金属而言,其总的趋势是,随着温度的升高,塑性提高。 10.钢冷挤压前,需要对坯料表面进行磷化皂化润滑处理。 11.为了提高润滑剂的润滑、耐磨、防腐等性能常在润滑油中加入的少量活性物质的总称叫添加剂。 12.材料在一定的条件下,其拉伸变形的延伸率超过100%的现象叫超塑性。 13.韧性金属材料屈服时,密席斯(Mises)准则较符合实际的。 14.硫元素的存在使得碳钢易于产生热脆。 15.塑性变形时不产生硬化的材料叫做理想塑性材料。 16.应力状态中的压应力,能充分发挥材料的塑性。 17.平面应变时,其平均正应力σm 等于中间主应力σ2。 18.钢材中磷使钢的强度、硬度提高,塑性、韧性降低。 19.材料经过连续两次拉伸变形,第一次的真实应变为ε1=0.1,第二次的真实应变为ε2=0.25,则总的真实应变ε=0.35 。 20.塑性指标的常用测量方法拉伸试验法与压缩试验法。 21.弹性变形机理原子间距的变化;塑性变形机理位错运动为主。 二、下列各小题均有多个答案,选择最适合的一个填于横线上 1.塑性变形时,工具表面的粗糙度对摩擦系数的影响 A 工件表面的粗糙度对摩擦系数的影响。 A、大于;B、等于;C、小于; 2.塑性变形时不产生硬化的材料叫做 A 。 A、理想塑性材料;B、理想弹性材料;C、硬化材料; 3.用近似平衡微分方程和近似塑性条件求解塑性成形问题的方法称为 B 。 A、解析法;B、主应力法;C、滑移线法; 4.韧性金属材料屈服时, A 准则较符合实际的。 A、密席斯;B、屈雷斯加;C密席斯与屈雷斯加; 5.由于屈服原则的限制,物体在塑性变形时,总是要导致最大的 A 散逸,这叫最大散逸功原理。 A、能量;B、力;C、应变; 6.硫元素的存在使得碳钢易于产生 A 。 A、热脆性;B、冷脆性;C、兰脆性; 7.应力状态中的 B 应力,能充分发挥材料的塑性。 A、拉应力;B、压应力;C、拉应力与压应力; 8.平面应变时,其平均正应力σm B 中间主应力σ2。 A、大于;B、等于;C、小于; 9.钢材中磷使钢的强度、硬度提高,塑性、韧性 B 。 A、提高;B、降低;C、没有变化; 10.多晶体经过塑性变形后各晶粒沿变形方向显著伸长的现象称为 A 。 A、纤维组织;B、变形织构;C、流线; 三、判断题 1.按密席斯屈服准则所得到的最大摩擦系数μ=0.5。(×) 2.塑性变形时,工具表面的粗糙度对摩擦系数的影响小于工件表面的粗糙度对摩擦系数的影响。 总的来说,函数、方程、数列、不等式、排列组合等内容是高频考点。 应试策略:1、注重基础:一般说来,自主招生中,中等难度题目分数比例大约60% 左右。 2、联系教材,适度拓宽知识面:注意课本上的自主.探究和阅读材料, 对和大学数学联系紧密的内容进行深度挖掘。自主招生中,有不少试题都来源于这些材料。 3、掌握竞赛数学的基本知识和解题技巧,着重培养数学思维能力。 4、考前进行模拟训练,熟悉每个高校的命题特点,掌握答题技巧。 高频考点一览: 一、 试题特点分析: 1. 突出对思维能力的考查。 【2014年北约】已知()01,2,...,i x i n >=1 1.n i i x ==∏求证:)) 1 1.n n i i x =≥ ∏ 【解析】不等式;柯西不等式或AM GM -平均不等式. 法一:AM GM -不等式.调和平均值n n n i n H G = ≤= ?? ∑ ≤n i n ≤? ?∑n i ≤∑n i ??≤∑ 1n n i i n n ?? ≤+= ∑∑, 即) 1 + ≤)) 1 n n i i x ≤∏ 法二:由 1 1. n i i x = = ∏ 及要证的结论分析,由柯西不等式得))2 1 1 i i x x ? ≥ ? ? , 从而可设1 i i y x =,且 11 1 1. n n i i i i y x == == ∏∏从而本题也即证)) 1 1. n n i i y = ≥ ∏ 从而))2 1 1 n n i i i x x ? +≥ ? ? ∏ ,即))21 n n i i i x y≥ ∏, 假设原式不成立,即)) 1 1 , n n i i x = < ∏则)) 1 1. n n i i y = < ∏ 从而))21 n n i i i x y< ∏,矛盾.得证. 2.注重和解题技巧,考查学生应用知识解决问题的能力。 【2014年北约】10、已知实系数二次函数() f x与()()() , g x f x g x =和()() 30 f x g x +=有两重根,() f x有两相异实根,求证:() g x没有实根. 【解析】设()2, f x ax bx c =++()2, g x dx ex f =++ 则由()() f x g x =,可得 ()()()()()() 2 20,40. a d x b e x c f b e a d c f -+-+-=?=----= 由()() 30 f x g x +=可得 ()()()()()() 2 2 3330,34330. a d x b e x c f b e a d c f +++++=?=+-++= 化简得22 3124, b e a c df +=+即() 22 434 e d f ac b -=-又240. b ac -> 240. e df ∴-<() g x ∴没有实根. 二、应试和准备策略 1.注意知识点的全面 第二章 信息量和熵 2.2 八元编码系统,码长为3,第一个符号用于同步,每秒1000个码字,求它 的信息速率。 解:同步信息均相同,不含信息,因此 每个码字的信息量为 2?8log =2?3=6 bit 因此,信息速率为 6?1000=6000 bit/s 2.3 掷一对无偏骰子,告诉你得到的总的点数为:(a) 7; (b) 12。问各得到多 少信息量。 解:(1) 可能的组合为 {1,6},{2,5},{3,4},{4,3},{5,2},{6,1} )(a p = 366=6 1 得到的信息量 =) (1 log a p =6log =2.585 bit (2) 可能的唯一,为 {6,6} )( b p = 36 1 得到的信息量=) (1 log b p =36log =5.17 bit 2.4 经过充分洗牌后的一副扑克(52张),问: (a) 任何一种特定的排列所给出的信息量是多少? (b) 若从中抽取13张牌,所给出的点数都不相同时得到多少信息量? 解:(a) )(a p = ! 521 信息量=) (1 log a p =!52log =225.58 bit (b) ???????花色任选 种点数任意排列 13413!13 )(b p =13 52 134!13A ?=135213 4C 信息量=1313 52 4log log -C =13.208 bit 2.9 随机掷3颗骰子,X 表示第一颗骰子的结果,Y 表示第一和第二颗骰子的点 数之和,Z 表示3颗骰子的点数之和,试求)|(Y Z H 、)|(Y X H 、),|(Y X Z H 、 )|,(Y Z X H 、)|(X Z H 。 解:令第一第二第三颗骰子的结果分别为321,,x x x ,1x ,2x ,3x 相互独立, 则1x X =,21x x Y +=,321x x x Z ++= )|(Y Z H =)(3x H =log 6=2.585 bit )|(X Z H =)(32x x H +=)(Y H =2?( 361log 36+362log 18+363log 12+364log 9+365log 536)+36 6log 6 =3.2744 bit )|(Y X H =)(X H -);(Y X I =)(X H -[)(Y H -)|(X Y H ] 而)|(X Y H =)(X H ,所以)|(Y X H = 2)(X H -)(Y H =1.8955 bit 或)|(Y X H =)(XY H -)(Y H =)(X H +)|(X Y H -)(Y H 而)|(X Y H =)(X H ,所以)|(Y X H =2)(X H -)(Y H =1.8955 bit金属塑性成形原理习题集与答案解析
第一讲:集合与命题(教师版)
信息论和编码理论习题集答案解析
集合与命题的常见错误归纳分析