Java中数组以及集合
2019独角兽企业重金招聘Python工程师标准>>>
java中数组: 数组在Java里是一种特殊类型,有别于普通的“类的实例”的对象。但实际数组也是一种对象类型,int[]a = new int[5] a是在java栈中分配的引用变量,类型是int[] 数组类型,指向在堆里面地址连续的实际数组对象。
在内存中,数组存储在连续的区域内部,因为数组中每个元素的类型相同,则占用的内存大小也一致,所以在访问数组中的元素时可以直接根据数组在内存中的起始位置以及下标来计算元素的位置,因此数组的访问速度很高。数组必须要初始化才能使用,初始化之后JVM会自动分配默认值,引用变量默认值是null。
数组和集合的区别:
1》数组初始化之后大小固定,无法再改变,集合大小可以改变。
2》同一个数组只能存储同一种数据类型(基本类型/引用类型).集合不考虑泛型可以存储多种数据类型,集合是存储对象的,所以基本类型不能放入集合,可以使用基本类型的包装类型。
3》若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。
数组和集合之间进行转化:
toArray():将集合转化为数组。
Arrays.asList():将数组转化为集合.
集合的体系结构
List、Set、Map是这个集合体系中最主要的三个接口。 List和Set继承自Collection接口。 Map也属于集合系统,但和Collection接口不同。
Set无序,不允许元素重复。HashSet和TreeSet是两个主要的实现类。Set 只能通过游标来取值,并且值是不能重复的。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的
Map 是键值对集合。其中key列就是一个集合,key不能重复,但是value可以重复。 HashMap、TreeMap和Hashtable是Map的三个主要的实现类。 HashTable 是线程安全的,不能存储
null
值 HashMap 不是线程安全的,可以存储
null
值
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快.
-------------------| TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
Collection接口的方法:
int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); boolean add(E e); boolean remove(Object o); boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean removeAll(Collection<?> c);
void clear();
http://blog.csdn.net/qq_33642117/article/details/52040345 set的讲解
http://blog.csdn.net/qq_33642117/article/details/52049764 map的讲解
转载于:https://my.oschina.net/yzbty32/blog/1634632
Java中数组以及集合相关推荐
- Java中数组转集合总结
一.使用Arrays.asList() 方法 package com.joshua317;import java.util.*;public class Main {public static voi ...
- java中数组和集合的区别以及特性
区别 集合与数组区别 1.数组声明了它容纳的元素的类型,而集合不声明. 2.数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了.而集合是可以动态扩展容量,可以根据需要动态改变大小,集 ...
- java 中数组的创建 数组遍历 以及数组的输出(打印)
什么是数组? 如果我们需要创建一个 int 类型变量,那么我们只需要 int a; 如果我们需要创建五个 int 类型变量,那么我们只需要int a1; int a2; int a3; int a4; ...
- Java中遍历Set集合的三种方法
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- java中 数组声明,java数组声明格式
java 声明动态数组,java对象数组详解,java中声明数组,java数组声明格式 Java 中数组的声明一维数组的声明: 在 Java 中,数组是独立的对象,有自身的方法,不是变量的集合. 数组 ...
- Java中数组怎么初始化?数组初始化方法
关于Java中数组怎么初始化的文章早已是非常多了,本文是对我个人过往学习Java,理解及应用Java数组的一个总结.此文内容涉及Java中数组初始化的三大方法等相关问题,希望对大家有所帮助. Java ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&quo ...
- java中数组的数据结构_Java数据结构与算法(一)--数组
目录 数组是应用最广泛的数据存储结构.它被植入大部分的编程语音.在Java中数组用来存放一种类型的集合. 1.数组的介绍 ①数组的声明 第一种方式: int[] arr = new int[10];/ ...
- Java 中数组Array和列表List的转换
主要介绍Java中Java 中数组Array和列表List的转换. 一.数组Array转列表List 1.使用Collections.addAll()方法 使用Collections.addAll() ...
最新文章
- ProgressDialog的使用-------------范例(学习笔记)
- 用matlab读取三角波及其频谱,信号与系统利用MATLAB分析信号频谱作业(第四章)以及结论.doc...
- 在 2016 年学 JavaScript 是一种什么样的体验?
- 如何理解java中String的不可变性
- mysql if selected_初识MySQL
- 外点惩处函数法·约束优化问题
- 蓝桥杯第八届省赛JAVA真题----包子凑数
- 字符串includes_字符串操作大全:面试准备和日常编码所需一文打尽
- mssql 查询每个业务员_每个社区管理员应阅读的7本书
- 《团对-学生成绩管理-开发环境搭建过程》
- Socket通信学习(一):Socket通信原理
- 每日算法系列【LeetCode 881】救生艇
- RHEL-用户基础-管道
- 鸿蒙安卓生态已经非常完善,鸿蒙前进一小步,生态却完善一大步,解决了替换安卓的第一个问题...
- 普中科技51单片机_【笔记】-普中科技-51单片机-按键
- GPS 射频调试总结
- [Campus]我的大学
- MQ7.0 在WAS中配置队列链接工厂并测试连接报2035错误
- ol xyz 加载天地图_OpenLayers 3 之 加载天地图
- 隐藏Excel单元格重要数值,不显示数值
热门文章
- Linux-pidstat Monitor and Find Statistics for Linux Procesess
- 在controller中调用指定参数给指定表单_第005课:Spring Boot 中MVC支持
- mysql 5.0 5.1_mysql从5.0升级到5.1
- pyqt5教程10:Widgets2组件
- ROS知识:ros和硬件的连接点---ROS-Control
- c语言编写的程序停止运行程序,C语言中,编译成功但运行停止的几个原因
- php是实现点击改变状态,PHP利用header函数实现各种状态的跳转
- 什么地方容易刷出ak_男人会用什么理由拒绝表白?
- Puppeteer + TypeScript 模拟 Ctrl + A 操作
- 【新星计划】 Python的txt文本操作-读、写