2016.3.9-3.10(java集合框架)

Posted 稳重的橙子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.3.9-3.10(java集合框架)相关的知识,希望对你有一定的参考价值。

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集合框架)的主要内容,如果未能解决你的问题,请参考以下文章

Java集合框架介绍

集合_java集合框架

Java集合一 集合框架

Java集合源码剖析Java集合框架

浅入深出之Java集合框架(上)

java集合框架