标签:
3.9
集合框架有什么作用?
集合框架其主要功能是用来将存储的数据以某种结构组织,并以特定的方式来访问这些数据。
Java集合框架中有哪些存储方式?
Java集合框架中的对象容器,按照对象在其中的存储方式,分为Set、List、和Map三种类型。
Set类型对象没有顺序,且不能重复;
List类型对象容器中的对象按照索引顺序排序,而且可以有重复的对象;
Map类型对象容器中的元素包含一对“键对象-值对象”映射,其中键对象不能重复,值对象可以重复。
以上三种存储方式对应Java集合框架中Set、List、和Map三个接口。
Collection 接口 和 Iterator 接口分别有什么作用?
Collection接口库位于Set接口和List接口的最顶层,是Set接口和List接口的父接口,Collection接口中定了Collection对象共有的一些基
本方法,这些方法分为基本操作、批量操作和数组操作
Iterator接口是一种用于遍历集合的接口。
List接口继承Collection接口,有什么特点?
List中的元素是有顺序的
List通常允许重复元素
List的实现类通常支持null元素,
可以通过索引访问List对象容器中的元素。
ArrayList:使用最广泛几何元素增加或删除操作不频繁时使用,最适合查询。
LinkedList:当需要在集合的中间位置频繁增加或删除元素时使用。
Vector:与ArrayList类似,但Vector是线程安全的,所以性能要低于ArrayList。
以上效率:效率排序:LinkedLis > ArrayList >Vector。
什么是泛型?如何使用泛型?
泛型就是允许在定义类,接口是指定类型形式参数,这个类型的形式参数将在声明变量、创建对象时确定(即传入的实际参数)。
可在类名后接< > 中定义类型形式参数。
3.10
Map接口是Java集合框架中不同于Collection接口的另一个重要接口,它对应的是在一种键(Key)到值(Value)的对应关系的集合。也就是
说,Map类型的对象容器里面保存着两组对象,一组用于保存Map里的Key,另外一组用于保存Value。
key和Value可以是任何引用类型的数据。key不能重复,但是Value可以重复。
输入学生姓名,学号,成绩,按照成绩分类学生
List<Student> stus = new ArrayList<Student>();
for (int i = 0; i < 30; i++) {
Student stu = new Student("张" + i, 10 + i, 2010 + i,
new Random().nextInt(100));
stus.add(stu);
}
Map<String, List> map = new HashMap<String, List>();
for (Student st : stus) {
if (st.getScore() >= 90) {
List list = map.get("A");
if (null == list) {
list = new ArrayList();
list.add(st);
map.put("A", list);
} else {
list.add(st);
map.put("A", list);
}
} else if (st.getScore() >= 80) {
List list = map.get("B");
if (null == list) {
list = new ArrayList();
list.add(st);
map.put("B", list);
} else {
list.add(st);
map.put("B", list);
}
}
}
HashMap类 速度快,不排序
TreeMap类 速度慢,排序
Iteara 接口是一种用于遍历集合的接口。所谓遍历,是指从集合中取出每一个元素的过程。在Collection接口中,有一个iterator方法,
通过该方法可以返回一个Iterator对象。通过这个对象,可以遍历集合中所有的元素。
Lis使用iterator遍历
List<Student> stus = new ArrayList<Student>();
for (int i = 0; i < 30; i++) {
Student stu = new Student("张" + i, 10 + i, 2010 + i,
new Random().nextInt(100));
stus.add(stu);
}
Iterator<Student> iter = stus.iterator();
while(iter.hasNext()){
Student stu = iter.next();
System.out.println(stu);
}
Set使用iterator遍历
Set<Student> stus = new HashSet<Student>();
for (int i = 0; i < 30; i++) {
Student stu = new Student("张" + i, 10 + i, 2010 + i,
new Random().nextInt(100));
stus.add(stu);
}
Iterator<Student> iter = stus.iterator();
while(iter.hasNext()){
Student stu = iter.next();
System.out.println(stu);
}
Map的遍历方法
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
//使用entrySet将map的键值对映射关系转换成Set集合
Set<Map.Entry<String, Integer>> set = map.entrySet();
//调用Set的iterator方法,得到其迭代器
Iterator<Map.Entry<String, Integer>> mapIter = set.iterator();
while(mapIter.hasNext()){
//next 得到的是Entry对象,而不是直接的键和值
Map.Entry<String, Integer> entry = mapIter.next();
String key = entry.getKey();
Integer val = entry.getValue();
System.out.println("key: " + key + "\t" + "value: " + val);
}
// for(String key : map.keySet()){
// System.out.println(map.get(key));
// }
标签:
原文地址:http://www.cnblogs.com/CMCM/p/5263836.html