文章

Java集合框架

Java集合框架集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。集合框架,我们暂且只研究以下几点:本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。ArrayListArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICol_iterator iterator = arraylist.iterator();

Java集合框架

文章信息

  • 原文链接: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集合框架

image

集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。

集合框架,我们暂且只研究以下几点:

image

本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。

ArrayList

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处———-来自百度百科

在进行讲解前,假设我们已经建立了两个类:Student,People,属性全部一样只有两个属性,姓名,id,其余有get,set方法,有参构造函数,无参构造函数。

1.创建ArrayList

ArrayList arrayList=new ArrayList();//这是使用泛型的方法

2.增加元素

arrayList arrayList.add(new Student(1,”李同学”));
arrayList.add(new Student(2,”王同学”));

3.对集合元素进行遍历

思想,利用迭代器遍历每一个元素

① 定义一个迭代器

Iterator iterator=arrayList.iterator();//切记,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 iterator2 = collection.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 iterator2=set.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("没有王先生"); } } } } }
本文由作者按照 CC BY 4.0 进行授权