java api 框架_JAVA基础--JAVA API集合框架 - Go语言中文社区

java api 框架_JAVA基础--JAVA API集合框架


一、Map集合

1. map集合介绍

Collection集合的特点:

集合中存储的所有元素都是单一元素,元素和元素之间没有必然的关系。因此我们把Collection集合也称为单列集合。

Map集合:

Map集合中保存的是一组(一对)数据。数据之间存在着一定的对应关系。Map集合就可以将数据的对应关系维护起来。当这样的数据存储在Map集合中,我们取出的时候,就可以根据这种对应关系获取到其中这组数据。

96730344eb37193639abd4b3a23a3847.png

1144a986c6b722f01714f8597407afd8.png

public interface Map

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map集合中的key是唯一的。每个key都有一个value值和其一一对应。

2.  Map集合中的方法

2.1 添加方法

a8383bae1113ed10f490de385e079dc6.png

df30c79055ce5fedc0488100622dbb21.png

通过演示Map接口中的Map方法,发现put方法可以将指定的一组数据保存到集合中。

但是put方法有返回值:

如果调用put方法的时候,在保存的key和value值时,key在集合中不存在,这时相当于给集合中保存了一组新的数据。这时put方法得到的null。如果保存的这组数据中的key在集合中已经存在,这时会用当前的value值覆盖掉key对应的原来的value值,并返回被覆盖的那个value值。

总结:put方法可以将一组对象保存到Map中,返回的当前key对应的原始的value值。如果key是第一次出现返回的null。如果不是第一次,就会修改原始的value值。返回原来的value值

2.2 删除方法

70852b32bb6ab7f845e3829bd980b917.png

2.3 获取方法

6fdc0739ceb21b2920d27a2b74752203.png

根据指定的key获取对应的value值。如果给出的key在集合中没有,返回null。

1 /*2 * Map集合中的获取方法

3*/

4 public classMapDemo3 {5 public static voidmain(String[] args) {6

7 //创建集合对象

8 Map map = newHashMap();9

10 map.put("aa", "bb");11 map.put("cc", "dd");12 map.put("ee", "fff");13

14 //打印

15System.out.println(map);16

17 Object o = map.get("aa");18System.out.println(o);19System.out.println(map);20}21 }

2.4 判断方法

0dd222cbe28549492c279118828d2817.png

bf03e91d5d01f8a291f824d82d92cd75.png

1 /*2 * 演示Map集合中的判断方法

3*/

4 public classMapDemo4 {5 public static voidmain(String[] args) {6 //创建集合对象

7 Map map = newHashMap();8

9 map.put("aa", "bb");10 map.put("cc", "dd");11 map.put("ee", "fff");12

13 //判断集合中是否包含指定的key

14 System.out.println(map.containsKey("aa"));15 System.out.println(map.containsValue("bb"));16System.out.println(map.isEmpty());17}18 }

3.Map集合的遍历

3.1 Map集合介绍

Map集合中保存的key-value一组数据。它们不能直接使用Iterator进行遍历。如果需要对Map集合进行遍历,这时必须先将Map集合转成Collection下的某个集合容器,然后再使用Iterator进行遍历。

Map集合的遍历有两种方式:

1、  获取Map中的所有key,然后将这些key保存到Set集合中。这时就可以使用Iterator进行遍历,进而就能得到每个的单独的key值,再使用Map中的get(key)方法得到key对应的value值。

2、  获取到Map中的key和value这组数据,再封装成一个新的对象。

3.2 keySet遍历

c12a423e3c960a9947c5d33e1ef4445e.png

b996394fe80c330e44cf5530c1c497fb.png

1 /*2 * 使用Map集合中的keySet方法遍历Map集合

3*/

4 public classKetSetDemo {5 public static voidmain(String[] args) {6

7 //创建集合对象

8 Map map = newHashMap();9

10 map.put("aa", "bb");11 map.put("cc", "dd");12 map.put("ee", "ff");13

14 //获取到Map中的所有key组成的Set集合

15 Set set =map.keySet();16

17 //遍历Set集合

18 for( Iterator it =set.iterator() ; it.hasNext() ; ){19 //获取到Set集合中的某个key值

20 Object key =it.next();21 //调用Map集合中的get方法,得到key对应的value值

22 Object value =map.get(key);23 System.out.println(key+"...."+value);24}25 }

3.3 entrySet遍历

d23085257b97177e9df6a5dcff8cada0.png

a9d60c0896c4bbe6c2fc75479ebd546c.png

1 /*2 * 使用Map集合中的 entrySet 方法遍历Map集合

3*/

4 public classEntrySetDemo {5 public static voidmain(String[] args) {6 //创建集合对象

7 Map map = newHashMap();8

9 map.put("aa", "bb");10 map.put("cc", "dd");11 map.put("ee", "ff");12

13 //获取到所有key和value组成的Entry对象,保存到Set集合中

14 Set set =map.entrySet();15

16 //遍历Set集合

17 for (Iterator it =set.iterator(); it.hasNext();) {18

19 //已经获取到key和value组成的Entry对象

20 Object obj =it.next();21 //由于取出的数据被提升成Object类型,这时需要向下转型

22 Entry entry =(Entry) obj;23 System.out.println(entry.getKey()+"...."+entry.getValue());24}25}26 }

就业班中学习JavaWEB中的JSP中的JSTL技术时,其中有foreach的标签,遍历Map集合的时候,使用的entrySet。

3.4 values方法

3c38c5c5d9e24d3f5dae87ebe8258084.png

获取到的Map集合中的所有value值组成的Collection集合。

1 /*2 * 演示Map集合中的values方法

3*/

4 public classValuesDemo {5 public static voidmain(String[] args) {6

7 //创建集合对象

8 Map map = newHashMap();9

10 map.put("aa", "bb");11 map.put("cc", "dd");12 map.put("ee", "ff");13

14 //获取到Map集合中的所有value值

15 Collection coll =map.values();16

17 //遍历集合

18 for(Iterator it =coll.iterator() ; it.hasNext() ;){19System.out.println(it.next());20}21}22 }

4.  HashMap演示

c9a137f8a79ccd30061d3a3008c13038.png

基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

HashMap是Map接口的实现类,它的底层使用的哈希表。哈希表作用在HashMap集合的key上。

当使用自定义对象作为HashMap集合的key值时,这个自定义对象所属的类需要复写Object类中的hashCode和equals方法。

1 /*2 * 演示HashMap,使用自定义对象作为Map的key值

3*/

4 public classHashMapDemo {5 public static voidmain(String[] args) {6

7 //创建集合对象

8 HashMap map = newHashMap();9

10 map.put(new Person("张三",23), "上海");11 map.put(new Person("张三",23), "上海");12 map.put(new Person("李四",33), "北京");13 map.put(new Person("王五",39), "东莞");14

15 //获取所有的key组成的set集合

16 Set set =map.keySet();17

18 //遍历

19 for( Iterator it =set.iterator();it.hasNext() ; ){20 Object key =it.next();21 //获取value值

22 Object value =map.get(key);23 System.out.println(key+"...."+value);24}25}26 }

b0e0e1fbb806baf0421fee161ac37f1b.png

5. TreeMap演示

cc4d320097ff03418c178ce41300186d.png

基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

TreeMap的底层是二叉树结构。二叉树作用在集合的key上。TreeMap集合可以对保存在其中的元素进行排序。

如果将对象保存在TreeMap集合中,key上的这个对象应该具备比较的功能,key上的对象所属的类应该实现Comparable接口。或者是在创建TreeMap的时候,传递一个Comparator对象。

1 /*2 * 使用自定义对象作为TreeMap的key值

3*/

4 public classTreeMapDemo {5 public static voidmain(String[] args) {6

7 //创建对象

8 TreeMap map = newTreeMap( );9

10 map.put(new Person("张三",23), "上海");11 map.put(new Person("张三",23), "上海");12 map.put(new Person("李四",33), "北京");13 map.put(new Person("王五",33), "东莞");14

15 //使用entrySet方法进行遍历

16 Set set =map.entrySet();17

18 for( Iterator it =set.iterator(); it.hasNext() ; ){19 Object obj =it.next();20 Entry entry =(Entry) obj;21 System.out.println(entry.getKey()+"....."+entry.getValue());22}23}24 }

6.  Map练习:

1 /*2 * 需求:统计字符串中每个字符的次数。

3 *

4 * 分析:

5 * 字符串数据是不确定的数据。其中的字符是什么也不知道,

6 * 但是我们可以只要这个字符出现过,就需要给出一个计数器统计这个字符的次数

7 *

8 * 遍历字符串,取出每个字符,然后判断它是否已经在统计的计数器中出现过,

9 * 如果出现过,就给这个计数器+1,如果没有出现过,说明这个字符是第一次出现

10 * 就给这个字符的计数器赋值为1.

11 *

12 * 统计字符的次数:

13 * 字符 次数

14 * 使用从字符串中取出的字符作为Map的key值,次数作为Map的value值

15 * 只要从字符串中取出一个字符,就判断当前这个字符在Map的key中是否存在,

16 * 如果存在,就取出对应的value值+1,再保存到Map中。如果不存在,就说明

17 * 字符是第一次出现,直接给value值为1,保存到Map中。

18 *

19*/

20 public classMapTest {21 public static voidmain(String[] args) {22

23 String s = "djfjsdl使用从字符串中取出的字符作为Map的key值,次数作为Map的value值";24

25 //需要定义一个集合

26 Map map = newHashMap();27

28 //遍历字符串

29 for(int i = 0 ; i < s.length() ; i++){30 //取出字符

31 char ch =s.charAt(i);32 //判断当前的字符在Map中是否存在

33 if( map.containsKey(ch) ){34 //判断成立说明当前从字符串中取出的字符,已经出现过

35 Integer value =(Integer) map.get(ch);36 //给value+1,再保存到Map中

37 value = value + 1;38map.put(ch, value);39 }else{40 //判断不成立,说明当前的字符是第一次出现

41 map.put(ch, 1);42}43}44

45 //遍历Map集合,取出每个字符的次数

46 Set set =map.keySet();47 for( Iterator it =set.iterator() ; it.hasNext() ; ){48 Object key =it.next();49 Object value =map.get(key);50 System.out.println("'"+key+"'出现的次数是:"+value);51}52}53 }

7.  Hashtable演示

fcd8e1b6a39e44538de8b1e4840ae232.png

此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。

Hashtable集合它属于Map集合,但是是JDK1.0时期的,底层是哈希表,和HashMap功能一致。它是安全的。

1 /*2 * 演示古老的双列集合Hashtable

3*/

4 public classHashtableDemo {5 public static voidmain(String[] args) {6

7 //创建集合对象

8 Hashtable table = newHashtable();9

10 table.put("aa","bb");11 table.put("ccc","ddd");12 table.put("ccc","ddd");13 table.put("eee","fff");14

15 //遍历

16 Enumeration en =table.keys();17 while( en.hasMoreElements() ){18 Object key =en.nextElement();19 Object value =table.get(key);20 System.out.println(key+"...."+value);21}22}23 }

2.  工具类介绍

工具类:在JDK中提供大量的类。但是这些类都有对用的功能。可是某些的功能并不能满足实际的所有需求,于是针对这些类有提供的其他的类,处于辅助其他类的这些类被称为工具类。

JDK中的工具类一般都以s结尾。并且工具类中的所有方法全部是静态的。

1. Collections工具类

ee9fd11083f34c0ee012e8452d1a5c59.png

此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。

Collections:中的方法都是静态的,可以操作集合。

51a9c50f4b20f98e02915c8768e5ae05.png

a6b2ff0acba921c5940b392a75ff2ac7.png

a70cf43cae60fdc0b5efb158fdd338d9.png

386850ed14e983e3b8aee81a592173a5.png

1aec4c6a943c2b480603c26ad02ce237.png

a020cfafc03f81cfb2588b8864805629.png

反转List集合中的元素。

148a9e4024549f42f122f6165bf7cc2f.png

反转比较器。

c19aca16bf33d6ee9eadff2c132ff518.png

dd18014282d53c6342b548ecd7aa8db0.png

结论:在使用集合的时候,如果发现需要使用集合的某个功能,但是自身没有这时就需要考虑使用Collections中的方法。

2. Arrays工具类、

3f46b1ebf2428cc4d3a1bebefdb3d2b4.png

51bd9071401cd6b50afa9bfd3ee42124.png

Arrays工具类中提供的大量可以操作数组的方法(折半查找、复制、排序、比较等)。

asList:它的功能是将一个数组转成List集合。目的是希望通过使用集合的方法来操作数组。

1 /*2 * 演示Arrays中的方法,将数组转成集合

3*/

4 public classArraysDemo {5 public static voidmain(String[] args) {6

7 //Integer[] arr = {11,22,33,44,55,66,77,88};

8 int[] arr = {11,22,33,44,55,66,77,88};9

10 //将数组转成集合

11 List list =Arrays.asList(arr);12

13System.out.println(list);14 //求最大值

15 Object max =Collections.max(list);16System.out.println(max);17Collections.reverse(list);18System.out.println(list);19

20}21 }

68208a651b90bdf8c7d081e327fc1a22.png

结论:数组转成集合的时候,只能将引用类型的数组中空间中的每个对象转后存储到集合中。基本类型数组作为一个整体存储在集合中。

集合转成数组:

直接使用Collection接口中的toArray方法完成。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_35346761/article/details/114071383
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 17:59:40
  • 阅读 ( 959 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢