java基础--集合框架的认识
一、集合框架
对于不知道存储数量和更复杂的方式存储对象用集合框架。
其中有几个常用的接口和实现类:Collection父接口、List接口,Set接口,Map接口,
ArrayList实现类、LinkedList实现类、hashSet实现类、hashMap实现类
Collection集合框架的父接口,该接口存储的是一组不唯一,无序的对象。
Collection父接口下有两个子接口:
List接口:存储的数据是 不唯一的、有序的
Set接口 : 存储的数据是惟一的、无序的
List接口下也有两个实现类:
ArrayList类:长度可变的数组、连续的,对于查询、增加数据操作优先使用
LinkedList实现类:基于链表形式,对数据的插入和删除操作便捷。
Set接口的实现类:hashSet实现类、TreeSet实现类;
如果查找集合的元素,而不知道数据的索引且需要全部遍历的情况下,ArrayList的效率就很低下。
在java框架中提供了查找效率更高的集合类HashSet,是Set接口中最常用的实现类。
Map接口的实现类:HashMap实现类、TreeMap实现类
Map中保存的数据是:存储的是一组键值对(key-value),提供了key到value的映射,键是不可以重复的
Iterator接口
Iterator接口表示对集合进行迭代的迭代器,为集合而生。专门实现集合遍历,
需要用while循环遍历
提供了三个方法
hasNext():判断是否还有下一个元素,有就可以迭代,返回true
next():返回要访问的下一元素;
remove():从迭代器指向Collection中移除带带器返回的最后一个元素(可选操作)
在框架中提供了工具类
Collections操作集合框架的工具类
Arrays:操作数组的工具类
java基础--集合框架的认识的更多相关文章
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- 十五、Java基础---------集合框架体系以及List
在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...
- 十七、Java基础---------集合框架之Map
前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示. Map<K,V> Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素, ...
- Java基础——集合框架(待整理)
ArrayList 和 和 Vector 的区别 从代码的最终的操作形式上可以发现,代码的输出结果与之前是一样的,而且没有区别,但是两者的区别还在于其内部的组成上. No. 区别点 Vector Ve ...
- 十六、Java基础---------集合框架之Set
写在前面的话,这篇文章在昨天就写好了,今天打开的时候一不小心将第二天的文章粘贴到了这篇文章,很不幸的是除了标题之外依然面目全非,今天带着沉痛的心情再来写这篇文章! 上篇文章介绍了Collection体 ...
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对 ...
- Java 基础 集合框架
Java中的集合从类的继承和接口的实现结构来说,可以分为两大类: 1 继承自Collection接口,包含List.Set和Queue等接口和实现类. 2 继承自Map接口,主要包含哈希表相关的集合类 ...
- Java基础-集合框架-ArrayList源码分析
一.JDK中ArrayList是如何实现的 1.先看下ArrayList从上而下的层次图: 说明: 从图中可以看出,ArrayList只是最下层的实现类,集合的规则和扩展都是AbstractList. ...
- Java基础-集合框架的学习大纲
1.List 和 Set 的区别 2.HashSet 是如何保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? 4.HashMap 的扩容过程 ...
随机推荐
- ES6的字符串和数值的扩展
字符串扩展 对于处理大于两个字节(大于0xffff)的字符,let str =’\u{20bb7}abc’ ES5中的遍历 for(let i=0;i<str.length;i++){ con ...
- PL_SQL学习
打印输出: dbms_output.put_line('AA'); 显示服务器输出信息 set serveroutput on; 打印出eid=1的员工姓名: declare v_name varc ...
- Linux常用命令之-删除文件
在测试过程中,有时候会需要删除一些文件,例如日志文件过大等,这里汇总一些删除文件常用的命 已这个系统内的文件为例 删除文件(即这个文件被删除) 单个删除:rm -f + 文件名 eg:rm -f 2 ...
- javascript的ES6学习总结(第一部分)
ES6(ESNext学习总结——第一部分) ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ECMA每年6月份,发布一个版本 201 ...
- seq2seq笔记
max_encoder_seq_length = max([len(txt) for txt in input_texts]) encoder_input_data = np.zeros( ( ...
- 立一个Flag吧
以后在学习上遇到的问题以及解决办法,大部分都要记录在这里了,以备温故知新....就这样吧!
- CJSON parse.c
#include <stdio.h> #include <stdlib.h> #include "cJSON.h" void printJson(cJSON ...
- Scala简介、安装、函数、面向对象
Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala命令行窗口,我们称之为REPL,是指:Read->Evalua ...
- dedecms二次开发
安装遇到的问题 修改文件如下 1.date目录下的config.cache.bak.php改成config.cache.php 2install目录下的index.html.install_lock. ...
- 使用nginx做反向代理和负载均衡效果图
连续请求nginx服务器,响应如图: 参考文章:https://segmentfault.com/a/1190000007495181