linux视频教程百度网盘分享,Java集合基础知识总结(绝对经典
2、JAVA集合可以存储和操作数目不固定的一组数据。
3、若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。
注:使用相应的toArray()和Arrays.asList()方法可以相互转换。
二、Java集合
集合类存放于Java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。
集合类型主要有三种:set(集)、list(列表)、map(映射)。
三、Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子while(it.hasNext()) {Object obj = it.next(); // 得到下一个元素}
由Collection接口派生的两个接口是List和Set。
四、Set
Set接口同样是Collection接口的一个子接口,Set不包含重复的元素。
HashSet:使用hashmap的一个集的实现。虽然集定义成无序,但必须存在某种方法能高效地找到一个对象。使用一个hashmap对象实现集的存储和检索操作时在固定时间内实现的。
TreeSet:在集中以升序对对象排序的集的实现。这意味着从一个TreeSet对象获得第一个迭代器将按升序提供对象。TreeSet类使用了一个TreeMap。
为优化hashset空间的使用,可以调优初始容量和负载因子。TreeSet 不包含调优选项,因为树总是平衡的,保证了插入、删除、查询的性能的高效。
当您要从集合中以有序的方式抽取元素时,TreeSet实现会有用处。为了能顺利进行,添加到TreeSet的元素必须是可排序的。
import java.util.*;public class SetExample {public static void main(String args[]) {Set set = new HashSet();set.add("Bernadine");set.add("Elizabeth");set.add("Gene");set.add("Elizabeth");set.add("Clara");System.out.println(set);Set sortedSet = new TreeSet(set);System.out.println(sortedSet);}}
五、List
List接口继承了Collection接口,定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。
实际上有两种list:一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是快速随机访问设计的,而是具有更通用的方法。
List : 次序是List最重要的特点:它保证维护元素特定的顺序。
ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。
LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大,随机访问则相对较慢。还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
Vector:实现一个类似数组一样的表,自动增加容量来容纳你所需的元素。使用下标存储和检索对象就象在一个标准的数组中一样。你也可以用一个迭代器从一个Vector中检索对象Vector是唯一的同步容器类!!
stack:这个类从vector派生而来,并增加了方法实现栈,一种后进先出的存储结构。
List的用法示例:
package collection;import java.util.*;public class SetExample {public static void main(String[] args) {List linkedList = new LinkedList();for (int i = 0; i <= 5; i++) {linkedList.add("a"+i);}System.out.println(linkedList);linkedList.add(3,"a100");System.out.println(linkedList);linkedList.set(6,"a200");System.out.println(linkedList);System.out.println(linkedList.get(2));System.out.println(linkedList.indexOf("a3"));linkedList.remove(1);System.out.println(linkedList);}}
六、list和set对比
Set子接口:无序,不允许重复,检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List子接口:有序,可以有重复元素,和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
Set和List具体子类:
Set
|————HashSet:以哈希表的形式存放元素,插入删除速度很快。
List
|————ArrayList:动态数组
|————LinkedList:链表、队列、堆栈。
七、map
1、map接口不是Collection接口的继承。
不重复的键到值的映射。
2、Map.Entry 接口
map的entrySet()方法返回一个实现map.entry接口的对象集合。集合中每个对象都是底层map中一个特定的键值对。
3、HashMap 类和 TreeMap 类
在map中插入、删除和定位元素,HashMap是最好的选择。但如果您要按顺序遍历键,那么TreeMap 会更好。根据集合大小,先把元素添加HashMap,再把这种映射转换成一个用于有序键遍历的TreeMap 可能更快。
为了优化hashmap空间的使用,您可以调优初始容量和负载因子。这个treeMap没有调优选项,因为该树总处于平衡状态。
hashtable:实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类时前面Java实现的一个继承,并且通常能在实现映象的其它类中更好地使用。
hashmap:实现一个映象,运行存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个空)。
WeakHashMap:如果有一个键对于一个对象而言不再被引用,键将被舍弃,WeakHashMap在具有大量数据时使用。
TreeMap: 实现这样一个映象,对象是按键升序排列的。
4、map的使用示例
以下程序演示了具体map类的使用。该程序对自命令行传递的词进行频率计数。hashmap起初用于数据存储。后来,映射被转换为TreeMap以显示有序的键列列表。
package collection;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.TreeMap;public class MapExample {public static void main(String[] args) {String[] array = {"a","b","c","d","e"};Map map = new HashMap();Integer ONE = new Integer(1);for (int i=0, n=array.length; i<n; i++) {String key = array[i];int frequency = i+1;map.put(key, frequency);}System.out.println(map);Map sortedMap = new TreeMap(map);System.out.println(sortedMap);//hashmap的同步Map map1 = Collections.synchronizedMap(map);System.out.println(map1);}}
5、控制台输出
最后
我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?
既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?
架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份**Java核心架构笔记**你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?
既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?
架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份**Java核心架构笔记**你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
linux视频教程百度网盘分享,Java集合基础知识总结(绝对经典相关推荐
- Java视频教程百度网盘,Java精选面试Spring全家桶
Spring 10C原理 Spring APO原理 Spring MVC原理 Spring Boot原理 JPA原理 Mybatis缓存 Tomcat架构 Spring面试题 一**.基本概念面试题集 ...
- 工作流 activity 视频教程 + redis 视频教程 百度网盘分享地址
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 云盘下载都没有密码,直接下载,解压有密码:chongxiangmengxiangjiaoyu, 解压 ...
- 国内计算机博士去百度云,于博士Cadence视频教程60集全套百度网盘分享
于博士Cadence视频教程60集全套百度网盘分享 于博士Cadence视频教程60集全套百度网盘分享,拿来主义,拿去主义,不谢~~~老吴就是看于博士Cadence视频教程入的门,虽然于博士录这些视频 ...
- 于博士Cadence视频教程60集全套百度网盘分享
原文地址::http://www.mr-wu.cn/dr-yu-cadence-tutorial-videos-baidu-share/ 相关文章 1.于争博士cadence视频教程的工程文件,原理图 ...
- 实现百度网盘分享保存到自己的网盘
目录 前言 简介 地址链接 功能 实现百度网盘分享保存到自己的网盘 查看源码的方式出现http地址 java实现解析地址保存到数据库 Python webdriver.Chrome()的使用 Pyth ...
- 我的百度网盘分享链接
我的百度网盘分享链接 是大概几年前,我在淘宝上看到有人卖中科院的视频,我就买了一些,发到verycd上,然后陆续有网友也买了一些,请我代发到verycd上,于是形成了最早的中科院系列视频.2014年, ...
- 软件测试“因子表”使用测试工具PICT下载安装,PICT中文乱码问题,pict下载百度网盘分享
有没有思考过"如何让有限的测试具有代表整体的测试覆盖率"? 在测试工作中,经常会遇到这样的场景:一个软件功能有多个输入项,每个输入项有多个可选项:一个接口有多个参数,每个参数有多个 ...
- python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...
今日推荐(在线观看)[完结]私域流量实战训练营(百度网盘分享下载)对 (在线观看)[完结]私域流量实战训练营(百度网盘分享下载)感兴趣的朋友可以学习参考 (有需要的找我,你就可以拥有这个课程)需要此 ...
- 优麒麟这样的linux版本,百度网盘 Linux 版发布,搭配优麒麟运行更完美!
近日,百度官宣推出了百度网盘 Linux 版(在此之前已发布 Windows.Android.iPhone.iPad.Windows Phone.Mac 等多个平台的版本),版本号为 Linux V2 ...
最新文章
- Java:何时使用静态方法
- WP7进阶】——XNA游戏平面矩形碰撞检测
- 都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇
- PHP Curl transfer closed with outstanding read data remaining
- [Baltic2009]Radio Transmission
- mysql 1.42_MySQL索引(一)
- Java基础学习总结(95)——Java反射主要用来干什么?
- Speaking of the impact of the epidemic
- 配置 MAC地址表实现绑定和过滤
- 基于SSM的高校后勤管理系统Java项目
- 关于批判性思维(Critical Thinking)
- Solved: RDP Disconnected – Error Code 2825 mremote
- 亚马逊卖家运营必备八大工具
- golden ticket和sliver ticket的区别是什么?
- 怎么抓取计算机窗口,又学会了一种黑别人电脑的方法——如何在登录界面获取shell...
- 人工智能:风口之上泡沫之中谨慎入坑
- mt4支持python么_py-mt4
- EFCore——Entry和Attach
- MATLAB读RGB888数据显示图片
- USART_ClearITPendingBith和 USART_ClearFlag的区别
热门文章
- tensorrt动态输入分辨率尺寸
- library “libopencv_java4.so“ not found“
- python 调用C++,传递int,char,char*,数组和多维数组
- boost之ThreadPool
- 对于随机森林的通俗理解
- dsst依赖opencv
- 通俗介绍拉普拉斯变换,傅里叶变换和z变换
- 三.Linux平台安装MongoDB
- php函数find的用法,c语言find函数的用法详解
- win7系统连接2003服务器时快时慢,win7/win8/win10访问Windows2003和XP共享慢的解决方法【图文教程】...