java集合入门
来源:互联网 发布:网站建设软件 免费 编辑:程序博客网 时间:2024/05/28 11:29
集合:也叫作容器类--->装数据(对象)
动态存储多个对象
动态:容器的大小随着存储的对象的数量而改变
对象:引用类型:8种基本数据--->包装类类型
数组:存储相同数据类型的一组数据
1.泛型:
集合:add(Object obj)--->子类类型
作用:保护集合中的数据的数据类型安全
2.遍历集合
官配:迭代器
集合的第一个元素--->最后一个元素
iterator()--->Iterator it
hashNext()--->boolean
next()--->元素
增强for()循环
for(数据类型 变量名:需要遍历的集合名称)
List接口遍历可以使用get(index)--->元素 类似数组
本课内容
Set 集合:
set集合的特点:无序,去重
Object类的相等问题:
equals()-->比较对象的属性 true false
实现类
HashSet :Object类 hashCode()-->对象的哈希码
HashSet:实现原理
step1:比较对象哈希码,如果对象的哈希码不同----不同的元素直接存储进hashSet集合
如果哈希码相同,通过哈希码无法判断是否是重复的元素,进入第二步
step2:equals()
true:---->重复的元素 不存储
false:---->不重复的元素 存储
同时去重写hashCode()和equals()
判断两个对象是否相同--->比较的规则
属性值相同----》equals()--->Oject类
this==obj ,子类重写equals()
对于对象
step1;hashCode()--哈希码
每一个对象都有自己的哈希码
哈希码如果不同---》肯定不是相同的元素
如果相同--->可能重复,也可能是不重复的
step2:equals()-->
属性值:相同-->true 不同-->false
结论:要想使用HashSet去重复的数据,必须重写hashCode()和equals()方法
hashCode的存储原理:1.对象的hashCodes是否相同,如果相同,直接存储,如果相同计入2步:equals(),重写equals方法,对对象的各个属性进行比较
TreeSet:根据比较器:Comparable用途:就是比较对象,对对象排序
Comparable的唯一抽象方法
comparableTo()---》int
正数:当前>被比较对象 存后边
负数:当前对象小 存前面
0:重复数据
HashSet:hashCode()与equals()
TreeSet:Comparable接口的唯一抽象分方法comprableTo()
Map集合
概念:容器 --->映射
表示一个映射,存储一组数 key-->value
特点:键和值,是一一对应的。键是不能重复的,value是可以重复的最常用的方法put(key,value)
get(key)根据键值取值
remove(key)
containsKey(“key”)
containsVlaue("value")
keySet()
size()
map中的key的去重复,原set中 的去重复原理
HashMap--->HashSet
TreeMap---->TreeSet
结论:如果map中存储的key,是自定义的类,要求是去重复的.
如果是hashMap,那么要重写该类的hashCode和equals
如果是treeMap,那么要让key的类实现Comparable比较器接口.
set.add(s1)
set.add(s2)
set.add(s3)
set.add(s4)
s2.compareTo(s1)
-1
s3.compareTo(s1)
-1
s3.compareTo(s2)
1
s4.compateTo(s1)
1
Map.Entry
key,value--->entry
阿Sa,阿娇--->twins
map--->
key,value
key,value
key,value
key,value
Set<Entry>
key,value-->entry
key,value-->entry
key,value-->entry
key,value-->entry
第一步:map<key,value>--->看成set<组合>:entry
第二步:在set上获取迭代器it-->Iterator<Entry>
第三步:循环迭代---->每一个组合对象:Entry
第四步:从组合中entry-->getKey(),getValue()
Map.Entry:key和value的组合对象.
map<key,value>-->Set<key>
迭代:获取每一个key
map(key)-->value
集合总结:
一、概念:也叫容器
动态存储多个对象
二、集合的结构
A。Collection-->每次操作一个对象
add() clear() iterator()
子接口:List:有序 可重复 ArrayList (数组的底层结构访问较快修改较慢)LinkedList (双向链表 修改较快访问较慢可以模拟栈(push()pop())和队列(poll() offer()))*Vector(线程安全 但是效率低)
子接口:Set:无序,去重复
实现类:
HashSet:实现原理
step1:对象hashCode()---->int
step2:对象的equals()-->boolean
TreeSet:实现原理
比较器:Comparable接 Comparator 接口
compareTo( o)--->int
this o
>0:this 大 o小 排后面
B.Map-->每次操作2个对象(键值对)
put(),remove(),size() containsKey() clear() keySet()
存储键值对的映射 键必须去重复 键和值是对应的
HashMap 与HashSet底层实现原理相同
TreeMap 与TreeSet底层实现原理相同
HashMap与HashTable区别:
HashMap是HashTable的代替类,HashTable是旧类已经不经常使用
HashTable中不能出现null,hashMap能出现null对于hashMap来说,null可以作为键值和值,直接作为对象使用,
HashMap父类是Map 和HashTable父类是dictionary不一致
工具类:
Collections类,方法都是静态,
Coolections.addAll(容器,添加什么元素(个数可以多个))//向容器中一次添加多个参数
sort(list)list存储的对象实现了comparable或者comparator
binarySearch()
reverse(()
sychronizedList/Set/Map
接口:Collection
3.泛型
类、方法、属性
类上的泛型在创建对象的时候确定类型
静态方法使用泛型,必须在声明方法的时候单独声明泛型,其类型在传实参的时候确定。
集合上的泛型 :集合<String> 如List<String>...
泛型的限定:
List<?>---->List<Object> ?代表任意类型 相当于Object
List<? extends E> 代表能接收的有E类型和E的子类
List<? super E> 能够接收的参数有E,E的父类,间接父类都可以
0 0
- java集合入门
- java集合入门
- java集合类入门
- JAVA集合入门
- java入门11-集合
- Java---集合初入门
- java io入门程序集合
- java集合入门基础理论知识
- Java入门_集合框架
- Java 入门 之 集合 Collection
- Java基础入门-JAVA的集合类
- Java入门学习-深入理解集合
- Java集合框架List入门学习
- java基础-- 集合框架入门 及 List集合
- Java入门第三季-4.Java中的集合框架
- java入门第三季(四、Java中的集合框架)
- java:Java入门第三季第七课:集合框架概述
- Java从入门到精通 - 集合类 List
- Linux 内核学习内容
- css布局
- 嵌入式实时操作系统任务调度算法
- APP开发实战55-实体类、辅助类和三方功能模块设计
- 云计算的发展路径和落地形态分别有几种?
- java集合入门
- I 帧,B帧,P帧,IDR帧的区别
- 相机模型(Camera Model)
- imx6交叉编译器arm-none-linux-gnueabi-gcc的安装
- 目标跟踪方法--CamShift 算法
- 简述C++虚函数作用及底层实现原理
- 使用HashMap时碰到的串值问题
- P V操作
- 淘宝