java集合知识点总结
下面是java中常见的集合:
List--列表:内部元素有序,可以重复,
ArrayList:线程不安全,效率高。数据结构是线性表,底层结构是顺序表,也就是数组,有唯一的下标来指定元素的位置,查询快,增删慢。
Vector:类似于ArrayList,但是线程安全,代价就是效率低。完全可以用ArrayList来替代,
List<String> list = Collections.synchronizedList(new ArrayList<String>())
上面代码就是将ArrayList改为线程安全的,其余的操作基本和原本一样。
LinkedList:线程不安全,效率高。数据结构是线性表,底层结构是单链表,查询慢,但是增删快
Set--集合:内部元素无序,不可重复
HashSet:线程不安全,效率高。数据结构是哈希表,底层结构是顺序表,LinkedHashSet的底层结构是单链表,具体类比ArrayList,
TreeSet:线程不安全,效率高。数据结构是红黑树,和HashSet的区别在于,它的元素是有序的,而这里的有序和我们在List谈到的有序不是一个意思,List中的有序是指你输入["gol","long","xiao"],在存储的时候下标0对应的就是"gol",下标1对应的就是"long",而这里的有序指的是元素在存储时自己遵守的一套规则,因为本身元素是不可重复的,和我们的添加顺序没有关系,比如我们输入[3,2,1],在存储是就会变为[1,2,3],按照1,2,3这个规则来排序,如果想得到类似于list的那种有序,LinkedHashSet可以实现。
Map--字典:通过“键”寻找“值”
HashMap:线程不安全,效率高。数据结构是哈希表,底层结构是顺序表,LinkedHashMap的底层结构是单链表,具体类比ArrayList
TreeMap:线程不安全,效率高。数据结构是红黑树,可以存储 null 值
HashTable:线程安全,效率低。数据结构是哈希表,不能存储 null 值
迭代器(iterator)遍历
list可以通过索引取值遍历,map可以通过键值,那set要怎么遍历呢?其实map的键的集合就是一个set,我们不处理怎么遍历set的问题就无法查看set和map中的值了,于是就有了迭代器
HashSet set = new HashSet<>();
set.add(99);
set.add(100);
set.add("gol");
Iterator it = set.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
迭代器就是一种提取集合中数据的接口,我们只需要对集合调用iterator()方法生成一个迭代器集合,而其内部如何生成对我们隐藏了,在迭代器中修改原集合的会触发ConcurrentModificationException(并发修改异常),也就是说在迭代器中不要进行修改(修改元素的值可以的,只要没有改变原集合的长度)的操作,会出错。若想在迭代的时候修改长度,List集合特有的listIterator()方法可以实现,(但仅仅是List有此方法)
而增强for循环就是在底层封装了迭代器,所有同样存在并发修改异常
HashSet<Integer> set = new HashSet<>();
set.add(99);
set.add(100);
set.add(98);for (Integer s:set){
System.out.println(s);
}
java集合知识点总结的更多相关文章
- java集合知识点
若不重写equals方法,则调用的是object对象的equals方法,相当于==比较,比较的是对象的内存地址 |------Collection接口:单列集合,用来存储一个一个对象 |------L ...
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- Java集合总结【面试题+脑图】,将知识点一网打尽!
前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集 ...
- 知识点:Java 集合框架图
知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList Java集合框架图 我们经常使用的Arrayist.LinkedList继承的关系挺复 ...
- Java 集合常见知识点&面试题总结(上),2022 最新版!
你好,我是 Guide.秋招即将到来(提前批已经开始),我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 你也可以在网站(javaguide.cn)上在线阅读, ...
- Java集合原理分析和知识点大杂烩(多图初学者必备!!)
一.数据结构 数据结构就是计算机存储.组织数据的方式. 在计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间,常用O符号来表述. 时间复杂度是同一问题可用不同算法解决, ...
- java后端知识点梳理——java集合
集合概览 Java中的集合,从上层接口上看分为了两类,Map和Collection.Map是和Collection并列的集合上层接口,没有继承关系. Java中的常见集合可以概括如下. Map接口和C ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
随机推荐
- 组态DNS、搜索域名和主机名
一个.组态DNS和搜索领域 特别配置DNS该文件是/etc/resolv.conf:同时,我们可以ifcfg-eth0网卡的配置和其他配置文件中指定的. 演示样本: [root@instructor ...
- 给CentOS 6安装Tomcat 7,从一开始
由于给企业培训以及前面几年使用PHP太多了,这次server逐步转为使用JavaEE来搭建. 下载的JDK 7.8已经出来了,可是不太熟悉,所以还是下载7版本号.这里怎样安装JDK7不讲了. 当前最新 ...
- C++异常机制的实现方式和开销分析 (大图,编译器会为每个函数增加EHDL结构,组成一个单向链表,非常著名的“内存访问违例”出错对话框就是该机制的一种体现)
白杨 http://baiy.cn 在我几年前开始写<C++编码规范与指导>一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :- ...
- EF相关报错
EF7无法找寻依赖问题解决方案 现象:使用EF7的过程中,任何"dnx . XXX"的都会报错,提示"cannot resolve dependencies for ta ...
- jquery子元素过滤器
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- delphi的拖拽功能实现
惭愧,编了这么多年程序,还没用过拖拽功能 这次同事要实现图标互换的功能,让我帮忙看一下,于是趁机研究了一下拖拽事件,发现还是比较简单的 参考了http://topic.csdn.net/u/20081 ...
- imp dll时遇见的非常恶心的问题
我需要导入dll库中这样一个函数VM661JTCPDLL_API int admin_login(sel_admin_ret* sel_admins, int num, char* admin_nam ...
- 零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式
原文:零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式 本章将先教大家认识ListBox的基本运用与更改预设样式 本章将先教大家认识List ...
- 微信小程序把玩(三十二)Image API
原文:微信小程序把玩(三十二)Image API 选择图片时可设置图片是否是原图,图片来源.这用的也挺常见的,比如个人中心中设置头像,可以与wx.upLoadFile()API使用 主要方法: wx. ...
- Android零基础入门第29节:善用TableLayout表格布局,事半功倍
原文:Android零基础入门第29节:善用TableLayout表格布局,事半功倍 前面学习了线性布局和相对布局,线性布局虽然方便,但如果遇到控件需要排列整齐的情况就很难达到要求,用相对布局又比较麻 ...