Java基础集合简单总结
集合
Collection单列集合有List 和 Set
List集合有:
ArrayList集合
特点:
1.存取有序 可以重复 有索引
2.底层是数组实现,查询快,增删慢
ArrayList底层:
1.ArrayList底层是一个数组
2.当初始化ArrayList,数组的长度为0
3.当第一次添加的时候,数组的长度为10
4.以后添加时,如果数组的长度不满足时,进行扩容 ,按1.5来进行扩容
5.扩容之后,将原数组中的元素拷贝到新的数组中
ArrayList的特有方法
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
ArrayList是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
LinkedList集合
特点:
1.存取有序 可以重复 有索引
2.底层是链表结构实现,查询慢 增删快
特有方法:
方法名 | 说明 |
---|---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
set集合有
hashset集合
特点
1.不可以存储重复元素 存储顺序不一致 没有索引 底层是hash表
2.没有索引,可以使用迭代器和增强for进行操作
HashSet是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
TreeSet集合
特点
1.不能存储重复的元素 没有索引
2.可以将元素按照规则进行排序
3.没有索引,可以使用迭代器和增强for进行操作
4.TreeSet的原理是红黑数,先获取左边,再获取中间,最后获取右边
TreeSet是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
排序的方式有:
1.自然排序Comparable的使用
使用空参构造创建TreeSet集合
用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
自定义的Student类实现Comparable接口
自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法
重写接口中的compareTo方法
重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
2.比较器排序Comparator的使用
用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的
比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法
重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
Map双列集合有HashMap和 TreeMap
Map集合的定义:
Map集合又称为双列集合,双列集合中每个元素中有两个值,主要用于存储具有映射关系的数据,这种关系是一一对应的
Map集合的特点:
键不能重复,值可以重复
键与值之间是一一对应的关系
(键+值)这个整体我们称之为"键值对"或"键值对对象",在Java中又叫"Entry对象"
HashMap集合
特点:2
HashMap底层是哈希表结构
依赖hashCode方法和equals方法保证键的唯一
如果键要存储自定义对象,需要重写hashCode和equals方法
方法介绍
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中键值对的个数 |
第一种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<K> keySet() | 获取所有键的集合 |
V get(Object key) | 根据键获取值 |
第二种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象集合 |
K getKey() | 获得键值 |
V getValue() | 获得值 |
TreeMap集合
特点: 可以排序
TreeMap底层是红黑树结构
依赖自然排序或者比较器排序,对键进行排序
如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则
方法和HashMap一样
第一种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<K> keySet() | 获取所有键的集合 |
V get(Object key) | 根据键获取值 |
第二种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象集合 |
K getKey() | 获得键值 |
V getValue() | 获得值 |
Java基础集合简单总结的更多相关文章
- JAVA基础-集合(二)
一.Map整体结构体系 Map是集合的另一大派系,与Collection派系不同的是Map集合是以键值对儿的形式存储在集合的.两个键为映射关系,其中第一个键为主键(主键是唯一的不可重复),第二个键为v ...
- Java基础-集合的嵌套
Java基础-集合的嵌套 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.静态导入 静态导入是在JDK1.5后的新特性,可以减少开发的代码量,但是实际用处是很一般,静态导入的标准 ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java基础---集合(1)
一. 基本概念 集合.数组都是对多个数据进行存储操作的结构,简称Java容器 数组:长度确定,类型确定,对于添加.删除.插入等操作效率不高,元素有序可重复 Java中集合框架顶层框架是:java.ut ...
- Java基础——集合源码解析 List List 接口
今天我们来学习集合的第一大体系 List. List 是一个接口,定义了一组元素是有序的.可重复的集合. List 继承自 Collection,较之 Collection,List 还添加了以下操作 ...
- Java基础—集合
一.概述 Java中的集合框架主要分为两大派别:Collection 和 Map —— 位于util包下 类的基础关系图如下(图片来自百度) 常用: List——有序可重复 Set——无序不可重复 M ...
- Java基础-1简单了解与原理
简单了解: Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.因为Java没有结构,数组和串都是对象,所以不需要指 ...
- JAVA基础——最简单的多重循环程序
Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: ...
- Java基础---集合
第一讲 集合框架 先看下面的图: 这就是集合框架的构成.由于数据结构的不同,有不同的集合,也叫容器.下面是集合类的简单介绍. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所 ...
随机推荐
- [整理]qbxt集训10场考试 大 杂 烩 (前篇)
Contest 1 A 计算 \(n!\mod 2^{32}\) .发现数一大答案就为 \(0\) ,直接输出即可. B 一个 \(n\times m\) 的网格,网格中的数都在 \([1,nm]\) ...
- JZOJ2020年8月14日提高组反思
JZOJ2020年8月14日提高组反思 T1 看到题 一脸:我是谁,我在哪,我要干啥 看到字符串凉一半 还有查询修改 想到线段树但不会建模 暴力安排 T2 一开始觉得:水题 然后啪啪打脸 空间小,数据 ...
- 2017 Mid Central Regional G. Faulty Robot(dfs + 尬模)
这道题看上去太像tarjan缩点了,我一上去本来想把所有的环给缩掉然后统计答案,后来发现哦,这道题不是这么回事儿. 给出黑边红边,一次性走至多只能走一次黑边,问有多少个点可以走到,并且让机器人停下来, ...
- C++20初体验——concepts
引子 凡是涉及STL的错误都不堪入目,因为首先STL中有复杂的层次关系,在错误信息中都会暴露出来,其次这么多类和函数的名字大多都是双下划线开头的,一般人看得不习惯. 一个经典的错误是给std::sor ...
- 第8.14节 Python类中内置方法__str__详解
一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下 ...
- 转:Python2字符编码问题汇总
这篇文章的部分问题在Python3以后不再存在,老猿只是觉得文章的部分内容还是有参考价值,因此在此原文转发连接: Python2字符编码问题汇总
- THE BUG 队第一次团队项目作业
队名: THE BUG 队 2.队员学号: 杨梓琦 3118005115(队长) 温海源,3118005109 陈杰才,3118005089 李华,3118005097 钟明康,3118005123 ...
- logging 用于便捷记录日志且线程安全的模块
import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname) ...
- 模块urllib requests json xml configparser 学习笔记
发起http请求 获取返回值 返回值是字符串 第三方模块安装 pip install requests 返回值格式 xml html jaon json 功能 loads 字符串>&g ...
- windows 远程连接报错
在windows7上或者windows10上远程连接服务器报错("连接错误"),试了网上的方法,发现是服务器安装ssl证书关闭了ssh服务,开启ssh服务后,重启电脑就可以解决这个 ...