《Java基础⼊门第2版》--⿊马程序员课后答案及其详解第6章集合
⽂章⽬录
⼀、填空题
1、Comparator
2、hashNext()、next()
3、键、值
4、ArrayList、LinkedList,HashSet、TreeSet,HashMap、TreeMap
5、forEach(Consumer action)
⼆、判断题
1、错
2、对
3、对
4、错
5、对
三、选择题
1、BC
2、D
3、C
4、D
5、ABC
四、简答题
1、为了使程序能⽅便的存储和操作数⽬不固定的⼀组数据,JDK提供了⼀套类库,这些类都位
于java.util包中,统称为集合。集合框架中常⽤的接⼝和类有,List、Set、ArrayList、HashSet、Map、HashMap、TreeMap。
2、List的特点是元素有序、可重复。List接⼝的主要实现类有ArrayList和LinkedList。Set的特点是元素⽆序、不可重复。Set接⼝的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接⼝的主要实现类有HashMap和TreeMap。
3、Collection是⼀个单例集合接⼝。它提供了对集合对象进⾏基本操作的通⽤⽅法。Collections是⼀个⼯具类。它包含各种有关集合操作的⽅法。
五、编程题
1.import java.util.*;
public class Test02 {
public static void main(String[] args){
HashSet hashSet =new HashSet();
Person p1 =new Person("Jack",25);
Person p2 =new Person("Rose",23);
Person p3 =new Person("Jack",27);
hashSet.add(p1);
hashSet.add(p2);
hashSet.add(p3);
for(Object obj:hashSet){
Person p=(Person)obj;
System.out.println(p.name+":"+p.age);
}
}
}
class Person{
String name;
int age;
public Person(String name,int age){
super();
this.name = name;
this.age = age;
}
public int hashCode(){
return name.hashCode();
}
public boolean equals(Object obj){
if(this== obj)
java入门课件
return true;
if(obj == null)
return false;
Person p =(Person) obj;
return p.name.equals(this.name);
}
}
2.import java.util.*;
public class Test03 {
public static void main(String[] args){
TreeMap map =new TreeMap(new MyComparator());
map.put("1","Lucy");
map.put("2","Lucy");
map.put("3","John");
map.put("4","Smith");
map.put("5","Amanda");
for(Object key : map.keySet()){
System.out.println(key +":"+ (key));
}
}
}
class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2){
String ele1 =(String) obj1;
String ele2 =(String) obj2;
return ele2pareTo(ele1);
}
}
六、原题及其解析
⼀.填空题
1.在创建TreeSet对象时,可以传⼊⾃定义⽐较器,⾃定义⽐较器需实现()接⼝。Comparator
2.使⽤Interator遍历集合时,⾸先需要调⽤()⽅法判断是否存在下⼀个元素,若存在下⼀个元素,则调⽤()⽅法取出该元素。
hashNext() next()
3.Map集合中的元素都是成对出现的,并且都是以()、()的映射关系存在。键 值
4.List集合的主要实现类有()、(),Set集合的主要实现类有()、(),Map集合的主要实现类有()、()。
ArrayList、LinkedList,HashSet、TreeSet,HashMap、TreeMap
5.在JDK8中,根据Lambda表达式特性还增加了⼀个()⽅法来遍历集合。forEach(Consumer action)
⼆.判断题
1.Set集合是通过键值对的⽅式来存储对象的。() 错×
2.集合中不能存放基本数据类型,⽽只能存放引⽤数据类型。()对√
3.如果创建的TreeSet集合中没有传⼊⽐较器,则该集合中存⼊得元素需要实现Comparable接⼝。()对√
4.使⽤Iterator迭代集合元素时,可以调⽤集合对象的⽅法增删元素。()错×
5.JDK8中增加的⼀个Stream接⼝,该接⼝可以将集合、数组中的元素转换为Stream流的形式。()对√
三.选择题
1.要想保存具有映射关系的数据,可以使⽤以下哪些集合?(多选)( ) BC
A.ArrayList
B.TreeMap
C.HashMap
D.TreeSet
2.使⽤Iterator时,判断是否存在下⼀个元素可以使⽤以下哪个⽅法?( ) D
<()
B.hash()
C.hasPrevious()
D.hasNext()
3.在程序开发中,经常会使⽤以下哪个类来存储程序中所需的配置?( ) C
A.HashMap
B.TreeSet
C.Properties
D.TreeMap
4.要想在集合中保存没有重复的元素并且按照⼀定的顺序排列,可以使⽤以下哪个集合?( ) D
A.LinkedList
B.ArrayList
C.hashSet
D.TreeSet
5.以下哪些⽅法是LinkedList集合中定义的?(多选)( ) ABC
<( )
四.简答题
1.简述什么是集合并列举集合中常⽤的类和接⼝。
为了使程序能⽅便的存储和操作数⽬不固定的⼀组数据,JDK提供了⼀套类库,这些类都位于java.util包中,统称为集合。集合框架中常⽤的接⼝和类有,List、Set、ArrayList、HashSet、Map、HashMap、TreeMap。
2.简述集合中的List、Set、Map有什么区别。
List的特点是元素有序、可重复。List接⼝的主要实现类有ArrayList和LinkedList。Set的特点是元素⽆序、不可重复。Set接⼝的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接⼝的主要实现类有HashMap和TreeMap。
3.简述Collection和Collections的区别。
Collection是⼀个单例集合接⼝。它提供了对集合对象进⾏基本操作的通⽤⽅法。Collections是⼀个⼯具类。它包含各种有关集合操作的⽅法。
五.编程题
1.在HashSet集合中添加三个Person对象,把姓名相同的⼈当做同⼀个⼈,禁⽌重复添加。要求如下:
Person类中定义name和age属性,重写hashCode( )⽅法和equals( )⽅法,针对Person类的name属性进⾏⽐较,如果name相
同,hashCode( )⽅法的返回值相同,equals( )⽅法返回true。
import java.util.*;
public class Test02 {
public static void main(String[] args){
HashSet hashSet =new HashSet();
Person p1 =new Person("Jack",25);
Person p2 =new Person("Rose",23);
Person p3 =new Person("Jack",27);
hashSet.add(p1);
hashSet.add(p2);
hashSet.add(p3);
for(Object obj:hashSet){
Person p=(Person)obj;
System.out.println(p.name+":"+p.age);
}
}
}
class Person{
String name;
int age;
public Person(String name,int age){
super();
this.name = name;
this.age = age;
}
public int hashCode(){
return name.hashCode();
}
public boolean equals(Object obj){
if(this== obj)
return true;
if(obj == null)
return false;
Person p =(Person) obj;
return p.name.equals(this.name);
}
}
2.选择合适的Map集合保存5位学员的学号和姓名,然后按学号的⾃然顺序的倒序将这些键值对⼀ ⼀打印出来。要求如下:
(1)创建TreeMap集合。
(2)使⽤put⽅法将学号(“1” “2” “3” “4” “5”)和姓名(“Lucy” “John” “Smith” “Aimee” “Amanda”)存储到Map 中,存的时候可以打乱顺序观察排序后的效果。
(3)使⽤map.keySet()获取键的Set集合。
(4)使⽤Set集合的iterator( )⽅法获得Iterator对象⽤于迭代键。
(5)使⽤Map集合的get( )⽅法获取键所对应的值。
import java.util.*;
public class Test03 {
public static void main(String[] args){
TreeMap map =new TreeMap(new MyComparator());  map.put("1","Lucy");
map.put("2","Lucy");
map.put("3","John");
map.put("4","Smith");
map.put("5","Amanda");
for(Object key : map.keySet()){
System.out.println(key +":"+ (key));
}
}
}
class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2){
String ele1 =(String) obj1;
String ele2 =(String) obj2;
return ele2pareTo(ele1);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。