Java集合框架提供了一套性能优良,使用方便的接口和类,它们位于java.util包中。
Collectionj接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序(有序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射
- 装箱→添加元素 Object
- 拆箱→获取元素 进行强制类型转换
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作,最常用的是HashMap。
接口的语法:
[访问修饰符] interface 接口名 extends 父接口1,父接口2...{
静态属性;
抽象方法;
}
作业:
- 以下(C)的对象可以使用键-值的形式保存数据。
- ArrayList B.LunkedList C.HashMap D.Collection
- 给定如下Java代码,可以填入下划线处的代码是(D)。
Import java.util.*
Public class Test{
Public static void main(String[] args){
___________________
list.add(“A”);
list.addFirst(“B”);
}
}
- List list = new ArrayList();
- List list = new LinkedList();
- ArrayList list = new ArrayList();
- LinkedList list = new LinkedList();
- 下列关于java.util.ArrayList的说法正确的是(A D)。
- 这个集合中的元素使有序的。
- 可以通过键来获取这个集合中的元素。
- 可以通过addFirst()方法在集合的首部插入元素。
- 在对这个集合执行遍历操作时,效率比较高。
- 给定如下Java代码,编译运行结果是(B)。
Import java.util.*;
Public class Test{
Public static void main(String[] args){
List list = new ArrayList();
list.add(“A”);
list.add(2,”B”);
String s = (String)list.get(1);
System.out.println(s);
}
}
- 编译时发生错误
- 运行时引发异常
- 正确运行,输出:A
- 正确运行,输出:B
- 给定如下Java代码,编译运行的结果是(C)。
import java.util.*;
public class Test {
public static void main(String[] args) {
Map map=new HashMap();
String s="key";
map.put(s, "Hello");
map.put(s, "World");
System.out.println(map.size());
}
}
- 编译时发生错误
- 运行时引发异常
- 正确运行,输出:1
- 正确运行,输出:2
简答题
1、简述Java集合框架的三大类接口及其区别。
List接口存储一组不唯一,有序(有序)的对象;
Set接口存储一组唯一,无序的对象;
Map接口存储一组键值对象,提供key到value的映射。
2、根据你的理解,请说明ArrayList和LinkedList的区别。
答:ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。
LinkedList采用链表的方式存储。插入,删除元素时比较效率高。
3、请说明以下这段Java代码是否存在错误,如果存在,请改正并给出运行结果;如果不存在,请给出运行结果。
public class TestList {
public static void main(String[] args) {
List list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
print(list);
}
public static void print(List pList){
for (int i = 0; i < pList.size(); i++) {
String str = pList.get(i);
System.out.print(str);
}
}
}
String str = pList.get(i);有错误,需要进行强制类型转换。String str = (String) pList.get(i);运行结果为:
ABC
4、创建一个类Queue,代表队列(特点:先进先出),添加add(Object obj)及get()方法,并添加main()方法进行效果验证。
1 public class Queue {
2
3 LinkedList list = new LinkedList();
4
5 public void add(Object obj){
6 list.addFirst(obj);
7 }
8
9 public Object get(){
10 return list.removeLast();
11 }
12 public static void main(String[] args) {
13
14 Queue q = new Queue();
15 q.add(1);
16 q.add(2);
17 q.add(3);
18 q.add(4);
19 q.add(5);
20 int size = q.list.size();
21 for (int i = 0; i < size; i++) {
22 System.out.println(q.get());
23 }
24 }
25
26 }
5.创建一个HashMap对象, 并在其中添加些学员的姓名和他们的分数,键为学员姓名(使用String 类型)。值为学员分数(使用Integer 类型。从HashMap对象中获取这些学员的成绩并输出。格改其中名学员的成绩, 然后再次输出所有学灵的成绩。
(使用put( )方法进行添加和修改操作;使用values()方法输出学员成绩。)
1 public class Score {
2
3 public static void main(String[] args) {
4 Map<String,Integer> score = new HashMap<String,Integer>();
5 score.put("小顾",88);
6 score.put("小蒋",96);
7 score.put("小贺",99);
8 score.put("小谢",98);
9
10 System.out.println("成绩单如下:");
11 for(String key:score.keySet()){
12 System.out.println(key+"\t"+score.get(key));
13 }
14
15 score.put("小顾",90);
16 System.out.println("修改后成绩单如下:");
17 for(String key:score.keySet()){
18 System.out.println(key+"\t"+score.get(key));
19 }
20
21 }
22
23 }