java第十六天学习

1.哈希表案例解析:


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

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

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


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

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];

​ }

​ }


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

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做参数可以存储任意类型的数据(意义不大)

​ 拓展:


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

4.Collections类


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

1.Collections是java.util包下的

2.Collections方法的测试


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

5.双列集合

map和collection

1.Map接口:

​ ![]
set接口以及set接口的实现类的学习

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集合中 。

​ 案例:

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

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

​ 案例1:


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

​ 案例2:


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

​ 案例3:


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

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

​ 案例:

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

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

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

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

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

​ 案例2.

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

​ 案例:

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

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

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

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

​ 案例:


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

6.LinkedHashMap

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

​ 案例:


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

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流集合

相关文章:

  • 2021-07-21
  • 2021-08-28
  • 2021-08-05
  • 2020-07-28
  • 2022-02-07
猜你喜欢
  • 2021-07-18
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2021-12-14
  • 2021-09-23
相关资源
相似解决方案