Java 之 集合框架(JCF)
1.集合框架
a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的、具有继承或实现关系的类与集合
b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象)
②特点:元素类型可以不同,集合长度可变,空间不固定
c.集合框架:提供了管理集合的接口和类
2.Collection 与 Collections
a.Collection:是一个接口,装东西的集合接口 (核心接口)
b.Collections:是一个算法类,操作即可的算法类
3.Collection
Collection(核心接口):a.List(列表):①ArrayList
②LinkedList
b.Set(集):HashSet
c.Map(映射):①HashMap
②Properties
4.List——列表
a.特点:①线性(有序,元素的放入顺序和元素的存储顺序保持一致)
②表现上,List最大的特点就是有下标
b. ArrayList:就是作为一个数组的封装出现的,底层就是数组
c. LinkedList:底层封装的是一个双向链表
d.应用:①当需要做大量的查询动作的时候,使用ArrayList
②当需要做大量的增加删除动作(特别是往中间增删),使用LinkedList
e.方法:①声明:
LinkedList<StudentBean> lst = new LinkedList<StudentBean>();
注:泛型:用来控制集合只能操作某一种数据类型<>
②增添:
lst.add(" ");
lst.add(new Date());
lst.add(new StudentBean("zhao4",32,76));
lst.add(100);
③长度:
int size = lst.size();
④修改:
lst.set(0, new StudentBean("zhang3feng",102,45));
⑤删除:
lst.remove(0);
⑥获取某个元素:
StudentBean stu = (StudentBean)lst.get(1);
StudentBean stu = lst.get(1); //加上泛型不需强转
⑦遍历:
方法一:使用普通for循环
方法二:使用迭代器---Iterator完成遍历----是集合框架类Collection直接分支专用(特点:没有下标,从头到尾走一遍)
Iterator<StudentBean> it = lst.iterator();
while(it.hasNext()){
StudentBean tmpStu = it.next();
System.out.println(tmpStu.getName());
}
方法三:for-each循环:底层封装的就是迭代器,但语法更简单,还可以操作数组
for(StudentBean tmpStu : lst){
System.out.println(tmpStu.getName());
}
5.Set——集
a.特点:①不能放置重复元素、无序
②表象上,Set没有下标
b.HashSet 的不重复性判断:
①调用equals方法得到两个对象比较为true
②两个元素的hashcode值保持一致
c.方法:
①增添:
set.add("hello");
set.add(new Date());
set.add(new StudentBean("zhang3",18,80));
set.add(200);
②长度:
int size = set.size();
③删除:只能根据对象进行删除,还是用的equals和hashCode来判断到底删除哪个对象
set.remove(new StudentBean("zhang3",18,80));
④修改(没有修改方法)
⑤遍历:
1.不支持普通for循环
2.支持迭代器
3.支持for-each
6.Map——映射
a.特点:①键值对。键要求唯一,值可以重复
②放入元素的顺序和存储顺序无关
b.常用子类:HashMap(主要用于集合操作)、Properteis(专用于操作属性文件)
c.方法:
①声明:
HashMap<String, StudentBean> map = new HashMap<String, StudentBean>();
②增添:
map.put("j34001", new StudentBean("zhang3",18,80));
③长度:
int size = set.size();
④修改:
map.put("j34001", new StudentBean("zhao6",24,75));
⑤删除:
map.remove("j34003"); //通过键去移除元素
⑥获取指定元素对象:
StudentBean stu = map.get("j34003");
⑦遍历:不能同时遍历键和值,只能分开遍历
遍历键:
Set<String> keySet = map.keySet(); //得到所有的键,装入一个Set集合中,返回给调用者
for(String key : keySet){
System.out.println(key);
}
遍历值:
Collection<StudentBean> allStus = map.values(); //得到所有的值,装入一个Collection集合中,返回给调用者
for(StudentBean tmpStu : allStus){
System.out.println(tmpStu.getName());
}
7.Collections工具类
a.Collections 与 Arrays:
①Collections:操作集合
②Arrays:操作数组
b.方法:
System.out.println(Collections.max(lst)); //求最大 System.out.println(Collections.min(lst)); //求最小 Collections.sort(lst); //排序(只能传List)自带内部比较器 Collections.sort(lst,new StudentComparator()); //排序 提供外部比较器 Collections.reverse(lst); //反转 Collections.shuffle(lst); //混排--随机打乱排序
8.比较器:
a.Comparable:内部比较器
b.Comparator:外部比较器
c.注意:Comparable 中的 ComparaTo()方法中,返回的正数、负数,依赖于根据比较规则两个元素的位置之差
Java 之 集合框架(JCF)的更多相关文章
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- Java 高级-集合框架
参考资料 参考 HashMap 类似 C++ 中的 STL 标准模板库,Java 也在 java.util 包中封装了一套常用数据结构及其算法,称为集合框架.所有的集合框架都包含如下内容: 接口:代表 ...
- Java的集合框架综述
集合 用于存储和管理数据的实体被称为数据结构(data structure).数据结构可用于实现具有不同特性的集合对象,这里所说的集合对象可以看作一类用于存储数据的特殊对象. 集合内部可以采用某种数据 ...
- 十五、Java基础---------集合框架体系以及List
在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...
随机推荐
- c语言第一章第一节 认识变量
声明:本人大一新生,闲着无聊..写写c语言教程..菜鸟一枚..大神勿喷!!! 接下来我们都用dev来进行编译..vc++太古老了,没提示功能,不好上手,并且老是出毛病..vs太大了,编个c不至于,运行 ...
- Excel—TEXT函数功能详解
1.将数值转为文本: "@" 2.转换为特定时间格式: "yyyy年mm月dd日" "yyyy/mm/dd" "yyyy/m/d& ...
- UVA - 11235 Frequent values
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
- codeforces 459E
codeforces 459E E. Pashmak and Graph time limit per test 1 second memory limit per test 256 megabyte ...
- jquery load 和 iframe 比较
如果要加载的东西比较简单,里面的没有复杂的数据和逻辑,可以使用load.如果要加载的页面自身有复杂的逻辑.操作,还是建议使用ifame,因为iframe里面可以引入自身的js和样式,而load引入的东 ...
- Jquery制作--循环滚动列表
自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...
- C# HttpWebReqeust和HttpWebResponse发送请求
var request = (HttpWebRequest)WebRequest.Create("URL"); var data = Encoding.UTF8.GetBytes( ...
- ubuntu专用
独立显卡处理驱动处理问题: http://blog.csdn.net/liufunan/article/details/52090382 git的教程: http://www.bootcss.com/ ...
- NOIP2016滚粗计
啦啦啦,第一次写游记~ Day0 早上浪浪浪,开了几盘CS 坐车到衢州,在车上开了几盘 艾萨克,然而好困啊…… 到衢二后围观XJ杭二合力A ztr,不是很懂为什么事情会变成这样 晚上开杀人游戏,wcz ...
- win7系统下的飞秋发送文件失败问题
飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...