Java集合框架
Java集合框架集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。集合框架,我们暂且只研究以下几点:本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。ArrayListArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICol_iterator iterator = arraylist.iterator();
文章信息
- 原文链接:https://jiayq.blog.csdn.net/article/details/75208426
- 发布时间:2017-07-16 17:36:23
- 阅读量:418
- 分类:java专栏收录该内容, 订阅专栏
- 标签:#框架, #java, #arraylist, #hashmap
摘要
文章浏览阅读418次。Java集合框架集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。集合框架,我们暂且只研究以下几点:本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。ArrayListArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICol_iterator iterator = arraylist.iterator();
Java集合框架
集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。
集合框架,我们暂且只研究以下几点:
本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。
ArrayList
ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处———-来自百度百科
在进行讲解前,假设我们已经建立了两个类:Student,People,属性全部一样只有两个属性,姓名,id,其余有get,set方法,有参构造函数,无参构造函数。
1.创建ArrayList
ArrayList
2.增加元素
arrayList arrayList.add(new Student(1,”李同学”));
arrayList.add(new Student(2,”王同学”));
3.对集合元素进行遍历
思想,利用迭代器遍历每一个元素
① 定义一个迭代器
Iterator
while (iterator.hasNext()) {
Student student=iterator.next();
if (student.getName().equals(“王同学”)) {
System.out.println(student);
}
}
ArrayList
不使用泛型有不使用泛型的好处,在使用泛型中,不需要进行强制类型转化,不需要判断类,但是也有缺点,就是使用了泛型后,只能放这一类型的对象,不能放如其他类型的对象,所以泛型在于型,而不在于泛,泛型是用来缩小范围的,不是扩大范围的。
1.创建接口对象
Collection collection = new ArrayList();
2.增加对象
collection.add(new Student(1,”贾同学”));//这是学生类
collection.add(new People(2, “王先生”));//这是People类
3.获得迭代器对象
Iterator
4.进行遍历
while(iterator2.hasNext())
{
Object object = iterator2.next();//使用一个Object对象存储迭代器取得的参数
if(object instanceof Student)//使用instanceof 运算符判断是不是学生类
{
Student student = (Student)object;
if(student.getName().equals(“贾同学”))
{
System.out.println(“贾同学”+student.getClass());
}
else {
System.out.println(“没有贾同学”);
}
}
else if(object instanceof People)//使用运算符判断是不是People类
{
People people = (People) object;
if(people.getName().equals(“王先生”))
{
System.out.println(“王先生”+people.getClass());
}
else
{
System.out.println(“没有王先生”);
}
}
}
HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。——来自百度百科
1.创建HashMap
HashMap<Integer, Student> hashMap=new HashMap<Integer,Student>();//Map是键值对的存储方式
2.增加元素
hashMap.put(1001, new Student(1,”张同学”));
hashMap.put(1002, new Student(2,”辛同学”));
3.遍历集合
思想:先使用Set获取Map的键,通过遍历键来遍历值,本质上是遍历键
①先获取键的集合
Set set=hashMap.keySet();
②获取键的集合的迭代器
Iterator
③遍历
while (iterator2.hasNext()) {
Integer integer= iterator2.next();
//通过HashMap的 get(Object key)获取集合中的值元素
Student student=hashMap.get(integer);
if (student.getName().equals(“辛同学”)) {
System.out.println(student);
}
}
完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
empty
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
/**
* 使用泛型的HashMap
*/
//哈希Map建立以键值对的方式进行创建
HashMap
hashMap = new HashMap
();
//添加两个Student对象,其键为10001,10002
hashMap.put(10001, new Student(1,"贾同学"));
hashMap.put(10002, new Student(2,"王先生"));
//读取时,先需要用到Set保存Map的键,通过遍历键来获取值
Set
set = hashMap.keySet();
//迭代器方式
Iterator
iterator = set.iterator();
while(iterator.hasNext())
{
Student student = hashMap.get(iterator.next());
if(student.getName().equals("贾同学"))
{
System.out.println("贾同学");
}
else
{
System.out.println("王先生");
}
}
/**
* 使用泛型的ArrayList
*/
Collection
cStudents = new ArrayList
(); cStudents.add(new Student(1,"贾同学")); cStudents.add(new Student(2,"王先生")); Iterator
iterator1 = cStudents.iterator(); while(iterator1.hasNext()) { Student student1 = iterator1.next(); if(student1.getName().equals("贾同学")) { System.out.println("jiatongxue"+student1); } } /** * 建立一个ArrayList,不使用泛型 */ Collection collection = new ArrayList(); collection.add(new Student(1,"贾同学")); collection.add(new People(2, "王先生")); Iterator
iterator2 = collection.iterator(); while(iterator2.hasNext()) { Object object = iterator2.next(); if(object instanceof Student) { Student student = (Student)object; if(student.getName().equals("贾同学")) { System.out.println("贾同学"+student.getClass()); } else { System.out.println("没有贾同学"); } } else if(object instanceof People) { People people = (People) object; if(people.getName().equals("王先生")) { System.out.println("王先生"+people.getClass()); } else { System.out.println("没有王先生"); } } } } }