java高级_集合
来源:互联网 发布:网络防御系统 编辑:程序博客网 时间:2024/06/05 19:05
集合(重点)
集合的概念:一组数据作为的一个整体
集合与数组的比较:
数组:数组的长度是固定的,一个数组中数据的数据类型应该是一致的,数据的数据类型可以是任何类型
集合:集合的长度是浮动的(与内容的数量有关),数据的数据类型可以不一致,
数据的数据类型只能是引用类型(基本数据类型使用的是包装类,利用了自动装箱和自动拆箱)
集合的继承体系
Collection接口 一种线性集合
List集合 有序可重复的线性集合
有序:存储顺序是可控的(存的顺序是可以得到保障)
可重复:两个相同的数据可以被存放两次
ArrayList类 底层实现方式是基于数组,方法是线程不安全的,效率比Vector高
LinkedList类 底层实现方式是基于链表
Vector类 底层实现方式是基于数组,方法是线程安全的,效率比ArrayList低
使用方法三者一致
数组与链表的区别(重点)
数组和链表是最基本的两种数据结构
数组在内存中是一块连续的存储空间
链表在内存中是分散存储的,链表由一个个的节点组成,
节点由两部分组成
(1)数据域: 存放数据的区域
(2)链域: 存放下一个节点的地址
数组的查找效率比链表要高,链表的新增和删除的效率比数组要高
ArrayList与LinkedList的区别其实就是数组与链表的区别
使用过程中:ArrayList和LinkedList的使用频率较高
程序是什么? 算法+数据结构
关于List集合的使用(以ArrayList为例)
add(Object o); 向集合的末尾处添加一个元素
add(int index, Object o); 向集合的指定位置处添加一个元素 (位置必须已存在)
remove(Object o); 将元素o从集合中移除
remove(int index); 移除指定位置处的元素
如果位置数字也是集合中的元素,按照移除位置方式进行移除
移除下标0时,移除后原下标1位置的元素,自动变成下标0
get(int index); 获取指定位置处的元素
set(int index, Object o); 将指定位置处的元素设置为元素o
size(); 获取集合中元素的个数(集合的长度)
Set集合 无序不重复的线性集合
Set集合不能通过下标来存取数据,需要利用迭代器进行存取操作
无序:存储顺序是不可控的(集合根据实现方式自动控制顺序)
不重复:两个相同的数据只能被存放一次,后存的会覆盖先存的
HashSet:利用hash表的顺序来保存数据
每个对象都有hashcode,HashSet利用存放对象的的hashcode作为保存顺序自动管理数据的顺序
TreeSet:利用二叉树的顺序来保存数据
利用二叉树的顺序来保存数据 (二叉树是数据结构的一种)
add(Object o); 向集合中添加一个元素
remove(Object o); 将元素o从集合中移除
size(); 获取集合中元素的个数(集合的长度)
iterator(); 返回一个关于Set集合的迭代器,利用迭代器可以访问集合中的数据(重点)
HashSet利用了HashMap集合来存放数据,Map集合也需要利用迭代器来获取数据
Map接口(Map集合) 一种键值对的集合
一个数据有两部分组成,一个部分是Key值,一个部分是Value值
其中key值部分数据不能重复,value部分数据可以重复
Collection或List集合是线性集合,一个位置只一个数据
Collection集合中有的可以存重复数据,有的不可以存重复数据
List集合中可以存重复数据
Map集合石键值集合,一个位置存储的是一组键值对
Map集合中key值不能重复,value可以重复
方法应用
clear(): 清除Map集合中的所有数据
containsKey(Object o): 判断对象o是否出现在key值中
containsValue(Object o): 判断对象o是否出现在value值中
keySet(): 获取所有key值组成的一个Set集合
get(Object o1):取得key值为o1的对应的value值 --获取
put(Object o1, Object o2):将o1为key,o2为value保存至Map集合中
如果o1已经存在,则o2会覆盖原有的value -- 新增+修改
remove(Object o1): 移除key值为o1的键值对
集合的泛型 -- 使用包装类
泛型可以理解为是一种描述引用类型的变量 基本数据类型可以使用包装类
List<String> list = new ArrayList<String>();
List<Integer> list = new ArrayList<Integer>();
泛型的作用:约束集合内数据的类型
优势:
存放数据时,自带数据类型检查
取得数据时,无需类型的强制转换
可以利用for-each语句进行集合的遍历
for(int i = 0; i < list.size(); i++){
}
泛型编程(了解)
-- 实现链表(了解链表的结构和形式)
链表
由一组节点组成的一个线性存储结构
节点
数据域:存放数据
链域:下一个节点的地址
class Node<T> T:表示输入的类型
public T data; T就表示泛型的类型的使用
迭代器 Iterator
将线性集合(List和Set)中的数据通过迭代的方式,进行访问,不能进行增删修操作
boolean hasNext() 判断当前指针之后是否有元素 有:true 没有:false
作为循环的条件
Object next() 取出当前指针之后的元素,并将指针向后移动一位
取出元素,在循环中最好只调用一次,否则容易逻辑问题
使用迭代完成对Set集合和Map集合的元素进行遍历访问
-------------------------------------------------------------------------------
练习1:将1-5数字随机存放在长度是8的List集合中, 只要结果不用排序
1 2 3 1 2 3 1 2 => 123
1 3 4 4 2 1 5 1 => 12345
练习2:
在控制台上完成以下内容 --学生管理系统
集合的选择?
List 存取方便,查找方便,重复数据检测不方便
Set 存方便,取不方便,查找不方便,重复数据检测方便
Map(以学号为key) 存取方便,查找方便,重复数据检测方便
为集合追加泛型
1.控制台上打印
---学生管理系统---
1.新增学生信息
2.根据学号修改学生信息
3.根据学号删除学生
4.根据学号查看学生信息
5.查询所有学生信息
6.退出
2.学生信息:学号,姓名和生日
3.使用者选择1
输入学号: 需要判断学号是否已被占用
输入姓名:
输入生日(yyyy-MM-dd):
4.使用者选择5
将所有学生的学号,姓名,和生日进行控制台输出
\t -- 制表符
\n -- 换行
\r -- 回车
集合的概念:一组数据作为的一个整体
集合与数组的比较:
数组:数组的长度是固定的,一个数组中数据的数据类型应该是一致的,数据的数据类型可以是任何类型
集合:集合的长度是浮动的(与内容的数量有关),数据的数据类型可以不一致,
数据的数据类型只能是引用类型(基本数据类型使用的是包装类,利用了自动装箱和自动拆箱)
集合的继承体系
Collection接口 一种线性集合
List集合 有序可重复的线性集合
有序:存储顺序是可控的(存的顺序是可以得到保障)
可重复:两个相同的数据可以被存放两次
ArrayList类 底层实现方式是基于数组,方法是线程不安全的,效率比Vector高
LinkedList类 底层实现方式是基于链表
Vector类 底层实现方式是基于数组,方法是线程安全的,效率比ArrayList低
使用方法三者一致
数组与链表的区别(重点)
数组和链表是最基本的两种数据结构
数组在内存中是一块连续的存储空间
链表在内存中是分散存储的,链表由一个个的节点组成,
节点由两部分组成
(1)数据域: 存放数据的区域
(2)链域: 存放下一个节点的地址
数组的查找效率比链表要高,链表的新增和删除的效率比数组要高
ArrayList与LinkedList的区别其实就是数组与链表的区别
使用过程中:ArrayList和LinkedList的使用频率较高
程序是什么? 算法+数据结构
关于List集合的使用(以ArrayList为例)
add(Object o); 向集合的末尾处添加一个元素
add(int index, Object o); 向集合的指定位置处添加一个元素 (位置必须已存在)
remove(Object o); 将元素o从集合中移除
remove(int index); 移除指定位置处的元素
如果位置数字也是集合中的元素,按照移除位置方式进行移除
移除下标0时,移除后原下标1位置的元素,自动变成下标0
get(int index); 获取指定位置处的元素
set(int index, Object o); 将指定位置处的元素设置为元素o
size(); 获取集合中元素的个数(集合的长度)
Set集合 无序不重复的线性集合
Set集合不能通过下标来存取数据,需要利用迭代器进行存取操作
无序:存储顺序是不可控的(集合根据实现方式自动控制顺序)
不重复:两个相同的数据只能被存放一次,后存的会覆盖先存的
HashSet:利用hash表的顺序来保存数据
每个对象都有hashcode,HashSet利用存放对象的的hashcode作为保存顺序自动管理数据的顺序
TreeSet:利用二叉树的顺序来保存数据
利用二叉树的顺序来保存数据 (二叉树是数据结构的一种)
add(Object o); 向集合中添加一个元素
remove(Object o); 将元素o从集合中移除
size(); 获取集合中元素的个数(集合的长度)
iterator(); 返回一个关于Set集合的迭代器,利用迭代器可以访问集合中的数据(重点)
HashSet利用了HashMap集合来存放数据,Map集合也需要利用迭代器来获取数据
Map接口(Map集合) 一种键值对的集合
一个数据有两部分组成,一个部分是Key值,一个部分是Value值
其中key值部分数据不能重复,value部分数据可以重复
Collection或List集合是线性集合,一个位置只一个数据
Collection集合中有的可以存重复数据,有的不可以存重复数据
List集合中可以存重复数据
Map集合石键值集合,一个位置存储的是一组键值对
Map集合中key值不能重复,value可以重复
方法应用
clear(): 清除Map集合中的所有数据
containsKey(Object o): 判断对象o是否出现在key值中
containsValue(Object o): 判断对象o是否出现在value值中
keySet(): 获取所有key值组成的一个Set集合
get(Object o1):取得key值为o1的对应的value值 --获取
put(Object o1, Object o2):将o1为key,o2为value保存至Map集合中
如果o1已经存在,则o2会覆盖原有的value -- 新增+修改
remove(Object o1): 移除key值为o1的键值对
集合的泛型 -- 使用包装类
泛型可以理解为是一种描述引用类型的变量 基本数据类型可以使用包装类
List<String> list = new ArrayList<String>();
List<Integer> list = new ArrayList<Integer>();
泛型的作用:约束集合内数据的类型
优势:
存放数据时,自带数据类型检查
取得数据时,无需类型的强制转换
可以利用for-each语句进行集合的遍历
for(int i = 0; i < list.size(); i++){
}
泛型编程(了解)
-- 实现链表(了解链表的结构和形式)
链表
由一组节点组成的一个线性存储结构
节点
数据域:存放数据
链域:下一个节点的地址
class Node<T> T:表示输入的类型
public T data; T就表示泛型的类型的使用
迭代器 Iterator
将线性集合(List和Set)中的数据通过迭代的方式,进行访问,不能进行增删修操作
boolean hasNext() 判断当前指针之后是否有元素 有:true 没有:false
作为循环的条件
Object next() 取出当前指针之后的元素,并将指针向后移动一位
取出元素,在循环中最好只调用一次,否则容易逻辑问题
使用迭代完成对Set集合和Map集合的元素进行遍历访问
-------------------------------------------------------------------------------
练习1:将1-5数字随机存放在长度是8的List集合中, 只要结果不用排序
1 2 3 1 2 3 1 2 => 123
1 3 4 4 2 1 5 1 => 12345
练习2:
在控制台上完成以下内容 --学生管理系统
集合的选择?
List 存取方便,查找方便,重复数据检测不方便
Set 存方便,取不方便,查找不方便,重复数据检测方便
Map(以学号为key) 存取方便,查找方便,重复数据检测方便
为集合追加泛型
1.控制台上打印
---学生管理系统---
1.新增学生信息
2.根据学号修改学生信息
3.根据学号删除学生
4.根据学号查看学生信息
5.查询所有学生信息
6.退出
2.学生信息:学号,姓名和生日
3.使用者选择1
输入学号: 需要判断学号是否已被占用
输入姓名:
输入生日(yyyy-MM-dd):
4.使用者选择5
将所有学生的学号,姓名,和生日进行控制台输出
\t -- 制表符
\n -- 换行
\r -- 回车
0 0
- java高级_集合
- Java 回顾笔记_集合框架-泛型高级应用
- java基础_集合
- java笔记_集合
- java学习_集合
- Java高级_网络编程
- java高级编程----集合框架
- java高级-集合和IO
- java高级特性之--集合
- java高级特性:集合框架
- Java集合框架_一_概览
- java第十三天_集合,List集合
- Java基础_集合类
- java学习要点_集合
- Java初级笔记_集合
- Java入门_集合框架
- java学习_集合(1)
- java学习_集合(2)
- React Native提高在模拟器上的运行速度
- [LeetCode]551. Student Attendance Record I
- ssh连接到重置的服务器时报错REMOTE HOST IDENTIFICATION HAS CHANGED
- 新装mvn建第一个项目报错org.apache.maven.plugins:maven-resources-plugin:2.6
- System.arraycopy实现数组之间的复制以及Arrays类的copyOf()实现数组复制
- java高级_集合
- DataBase-group by, having 和 where 区别
- 几个关于换行的属性
- 2008年东莞小学竞赛试题四 石子归并
- leetcode-322硬币找零
- 递归--字符串逆序
- 欢迎使用CSDN-markdown编辑器
- MySql获取所有表名
- 规范-Redis使用