JAVA语言入门学习之常用工具类--集合框架 介绍
小标 2018-11-05 来源 : 阅读 1295 评论 0

摘要:本文主要向大家介绍了JAVA语言入门学习之常用工具类--集合框架 介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言入门学习之常用工具类--集合框架 介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


Java 中的集合框架(上)


Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象


集合的作用


1在类的内部,对数据进行组织 2简单而快速的搜索大数量的条目 3有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素 4有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找对应的唯一对象,而这个关键字可以是任意类型


与数组的对比


数组的长度固定,集合长度可变 数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象


Java中的集合


  接口


  别称


  说明


  实现类

List接口    序列    存储元素排列有序且可重复。    实现类:ArrayList,数组序列。实现类:LinkedList,链表。    

Queue接口    队列    存储元素排列有序且可重复。    实现类:LinkedList,链表。    

Set接口    集    存储元素无序且不可重复。    实现类:HashSet,哈希集。    

Map接口    内部以两个对象(任意类型)为一个映射去存储数据,这一个映射就是Entry类(Map的内部类)的实例。    常用实现类hashMap,哈希表。    


其中ArrayList HashSet HashMap使用频率最高


Collection接口&List接口简介


Collection接口


1是List、Set和Queue接口的父接口


2定义了可用于操作List、Set和Queue的方法——增删改查


List接口及其实现类——ArrayList


1List是元素有序并且可以重复的集合,被称为序列


2List可以精确的控制每个元素的插入位置,或删除某个位置元素


3ArrayList——数组序列,是List的一个重要实现类


4ArrayList底层是由数组实现的


学生选课


4种形式添加(课程对象)


//创建一个课程对象,并通过调用add方法,添加到备选课程List中

Course cr1 = new Course("1" , "数据结构");

coursesToSelect.add(cr1);//从第0位开始存

//对象存入集合都会变成Object类型,取出时需要类型转换

Course temp = (Course) coursesToSelect.get(0);

//集合.add(索引位置, 添加的对象);

//会把原来最初0位的cr1给挤下去,变成第一位,而cr2变成最初第0位【不是覆盖】

coursesToSelect.add(0, cr2);

 

//数组形式添加

Course[] course = {new Course("3", "离散数学"), new Course("4", "汇编语言")};

coursesToSelect.addAll(Arrays.asList(course));

 

//数组 带有索引位置的添加

Course[] course2 = {new Course("5", "高等数学"), new Course("6", "大学英语")};

coursesToSelect.addAll(2, Arrays.asList(course2));

   


迭代器只用来遍历集合中的元素的,本身不具备任何存储元素的功能


【迭代器依赖于某个集合而存在的】不能独立存在


   

//通过集合的iterator方法,取得迭代器的实例

Iterator<course> it = coursesToSelect.iterator();

System.out.println("有如下课程待选(通过迭代器访问):");

while(it.hasNext()) {

 Course cr = it.next();

 System.out.println("课程:" + cr.id + ":" + cr.name);

}

//foreach形式

for (Object obj : coursesToSelect) {

 Course cr = (Course) obj;

 System.out.println("课程:" + cr.id + ":" + cr.name);

}</course>

   


增查改删


应用泛型管理课程


应用泛型管理课程1


集合中的元素,可以是任意类型的对象(对象的引用)


如果把某个对象放入集合,则会忽略他的类型,而把他当做object处理


泛型则是规定了某个集合只可以存放特定类型的对象


会在编译期间进行类型检查【泛型集合中,不能添加泛型规定的类型及其【子类型】以外的对象,否则会报错!】【泛型集合可以添加泛型的子类型的对象实例】


可以直接按指定类型获取集合元素


应用泛型管理课程2


1泛型集合中的限定类型不能使用基本数据类型


2可以通过使用包装类限定允许存入的基本数据类型



基本类型必须使用包装类作为泛型!


通过set集合管理课程


Set接口及其实现类——HashSet


1Set是元素无序并且不可以重复的集合,被称为集


2HashSet——哈希集,是Set的一个重要实现类


1、Set没有像List中set()方法一样就修改,因为List是有序的,可以指定位置,而Set是无序的。


2、查询遍历时,Set不能用get()方法去获取,因为无序没有指定索引ID,但可以使用foreach和iterator来遍历,但是每次遍历出来可能顺序都不一样,还是因为无序造成的。


3、Set中的size(),add(),addAll(),remove(),removeAll()与List类似。


4、Set还可以添加null;


Set中,添加某个对象,无论添加多少次, 最终只会保留一个该对象(的引用)


并且保留的是第一次添加的那一个


Java 中的集合框架(中)


Map和HashMap


Map接口:


1Map提供了一种映射关系,其中的元素是以键值对(Key-value)的形式存储的,能够实现根据key快速查找value


2Map中的键值对以Entry类型的对象实例形式存在


3键(key值)不可重复,value值可以


4每个键最多只能映射到一个值


5Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法


6Map支持泛型,形式如:Map


HashMap类:


1HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现


2HashMap中的Entry对象是无序排列


3key值和value值都可以为null,但一个HashMap只能有一个key值为null映射(key值不可重复)【key:null,value:null占一个map的size】


keySet()返回的是所有键的一个set集合


// 通过keySet方法,返回Map中的所有“键”的Set集合

Set<string> keySet = students.keySet();

// 取得students的容量用size()

System.out.println("总共有:" + students.size() + "个学生!");

// 遍历keySet,取得每一个键,再调用get方法取得每个键对应的value

for (String stuId : keySet) {

 Student st = students.get(stuId);

 if (st != null)

  System.out.println("学生:" + st.name);

}</string>

   


hashMap实现Map接口,hashMap中的映射是无序的,因此输出也是无序的;但是把的Key拿出来放到Set里面去,Set是有序的,你按着有序的KEY拿出VALUE,那结果当然是有序的啦


Map的get()方法中传入key值就可以取得key值对应的对象


// 通过entrySet方法,返回Map中的所有键值对

Set<entry<string, student="">> entrySet = students.entrySet();

for (Entry<string, student=""> entry : entrySet) {

 System.out.println("取得键:" + entry.getKey());

 System.out.println("对应的值为:" + entry.getValue().name);

}</string,></entry<string,>


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved