码迷,mamicode.com
首页 > 编程语言 > 详细

2016.3.9-3.10(java集合框架)

时间:2016-03-10 23:33:03      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

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));
// }

 

2016.3.9-3.10(java集合框架)

标签:

原文地址:http://www.cnblogs.com/CMCM/p/5263836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!