set接口以及set接口的实现类的学习

java第十六天学习

1.哈希表案例解析:


哈希表的案例解析png.png

2.LinkedHashSet是在HashSet基础上加了链表

​ 数组+链表/红黑树+链表(多了一条链表,记录元素的顺序 包装元素有序)


20200928_094233.png

3.可变参数

​ JDK 1.5之后 新特性

1.案例求和
1. 求三个数的和:

​ public static void main(int a,int b){

​ return a+b;

​ }

​ public static void main(int a,int b, int c){

​ return a+b;

​ }

2.求多个数的和:

​ 案例:

​ public static void main(String[]args){

​ int []arr={1,2,3,4,5};

​ int sum=sum(arr);

​ System.out.println(sum);

​ }

​ public static int sum(int []arr){

​ int sum=0;

​ for(int i=0;i<arr.length;i++){

​ sum+=arr[i];

​ }

​ }

1.可变参数的案例 :

​ public static void main(String[]args){

​ int sum=sum(1,2,3,4,5,6);

​ System.out.println(sum);

​ }

​ public static int sum(int…arr){

​ int sum=0;

​ for(int i=0;i<arr.length;i++){

​ sum+=arr[i];

​ }

​ }


20200928_095051.png

1.可变参数的语法:

​ 方法名(数据类型。。。。变量名)

2.可变参数的原理:

​ 可变参数底层就是一个数组 根据参数的个数不同 会创建不同长度的数组来存储这些参数 传递参数的时候可以是0个多少都可以

3.可变参数的注意事项:
  • 一个方法的参数列表只能有一个可变参数

  • 如果方法的参数有多个,那么可变参数必须在参数列表的末尾

    ​ 案例:

    ​ public static void main(String[]args){

    ​ int sum=sum(1,2,3,4,5,6);

    ​ System.out.println(sum);

    ​ }

    ​ public static int sum(int a,int…arr){

    ​ int sum=0;

    ​ for(int i=0;i<arr.length;i++){

    ​ sum+=arr[i];

    ​ }

    ​ }

  • 特殊写法Object…obj

    ​ 案例:

    ​ public static void main(String[]args){

    ​ int sum=sum(1,2,3,4,5,6,new Student(12,"123“));

    ​ System.out.println(sum);

    ​ }

    ​ public static int sum(Object…obj){

    ​ int sum=0;

    ​ for(int i=0;i<arr.length;i++){

    ​ sum+=arr[i];

    ​ }

    ​ }

​ 注:object是万类之祖因此用Object做参数可以存储任意类型的数据(意义不大)

​ 拓展:


Object..obj.png

4.Collections类


collections.png

1.Collections是java.util包下的
2.Collections方法的测试


20200928_093040.png

5.双列集合

map和collection

1.Map接口:

​ ![]
20200928_100609.png

2.map<k,v>是java.util包下的
3.Map集合的特点:

​ 1.map集合是一个双列集合,一个元素包含两个值(Key,Value)

​ 2.Map集合中的元素,key和value的数据类型可以相同也可以不同

​ 3.Map集合中的元素,key是不允许重复的,value是可以重复的

​ 4.map集合中的元素,key和value是一一对应的

4.HashMap
1.HashMap<K,V>是java.util包下的(java.util.HashMap<K,V>
2. HashMap的特点:

​ 1.HshMap底层是一个哈希表 查询速度快

​ JDK1.8版本之前 数组+链表

​ JDK1.8版本以后 数组+链表/红黑树

​ 2.HahMap是一个无序的元素集合 存储元素和取出元素可能不一致

3.HashMap中的方法:

​ 1. public v put(K key,V value): 把指定的键与指定的值添加到Map集合中 。

​ 2.public v remove(object key):把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。

​ 3.public v get(object key):根据指定的键,在Map集合中获取对应的值。

​ 4.boolean containsKey(object key):判断结合中是否包含指定的键。

​ 5.pulic setkeySet():获取Map集合中所有的键,存储到Set集合中。

​ 6.public set<Map.Entry<K,V>>entrySet():获取到Map集合中所有的键值对对象的结合( Set集合)。

4.HashMap方法的实现:

​ 1. public v put(K key,V value): 把指定的键与指定的值添加到Map集合中 。

​ 案例:

put方法的测试2.png

​ 2.public v remove(object key):把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。

​ 案例1:


remeov方法的实现.png

​ 案例2:


remove方法实现2.png

​ 案例3:


remove方法实现案例4.png

​ 3.public v get(object key):根据指定的键,在Map集合中获取对应的值。

​ 案例:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mqNRKiYu-1601276676570)(C:\Users\lenovo\Desktop\可变参数\get方法实现的案例.png)]
get方法实现的案例.png

​ 4.boolean containsKey(object key):判断结合中是否包含指定的键。

​ 5.pulic setkeySet():获取Map集合中所有的键,存储到Set集合中。

​ 案例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcMfAvFg-1601276676574)(C:\Users\lenovo\Desktop\可变参数\KeySet方法的实现.png)]
KeySet方法的实现.png

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rUyeEogg-1601276676578)(C:\Users\lenovo\Desktop\可变参数\KeySet方法实现的案例2.png)]
KeySet方法实现的案例2.png

​ 案例2.

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yOujnWjx-1601276676587)(C:\Users\lenovo\Desktop\可变参数\方案3.png)]
方案3.png
​ 6.public set<Map.Entry<K,V>>entrySet():获取到Map集合中所有的键值

​ 案例:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V6CBvssF-1601276676591)(C:\Users\lenovo\Desktop\可变参数\error.png)]
error.png

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b1MRHrQk-1601276676596)(C:\Users\lenovo\Desktop\可变参数\entrySet方法的实现1.png)]
entrySet方法的实现1.png


entrySet方法实现1一部分.png

5. HashMap存储自定义类型Hero作为键 重写该类的HashCode和Equals

​ 案例:


自定义.png

6.LinkedHashMap

1.LinkeHashMap是java.util包下的java.util.LinkedHashMap<K,V>
2.java.util.LinkedHashMap<K,V>extend HahMap<K,V>
3LinkedHahsMap底层:哈希表+链表 保证有序

​ 案例:


LinkedHashMap1.png

7.HashTable

1.HashTable是java.util包下的 java.util.HashTable<K,V>
2.java.util.HashTable集合 implements Map 接口
3.HashTable和HashMap的区别

​ 1.HashTable:底层是一个哈希表 是一个线程安全的集合,是单线程 速度慢

​ 2.HahshMap:底层是一个哈希表 是一个线程安全的集合 是多线程 速度快

​ 3.HashMap:可以存储null键 null值

​ 4.HashTable:不能存储null值和NUll键

​ 5.HashTable和Vector已被被替换了

案例:

​ public static void main(String[]args){

​ Hashtable<String,String> hashtable=new Hashtable<>();

​ hashtable.put(null,null);

​ //java.lang.NullPointerException

​ }

案例2:

​ public static void main(String[]args){

​ HashMap<String,String> Map=new HashMap<>();

​ Map.put(null,null);

​ }

  1. properties

    ​ properties集合 是唯一一个和I/O流集合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值