首页 > 编程语言 >十五.JAVA.MAP.工具类,泛型

十五.JAVA.MAP.工具类,泛型

时间:2023-12-25 09:02:29浏览次数:41  
标签:MAP JAVA 映射 map Object System println key 泛型

  • 嵌套类/内置类/内部类/内部接口

    • K : key V : value E : element R : ReturnType T : type

  • Map<K, V> : 存储的是键值对。每个键值对成为映射项(Entry);键唯一,值是可重复的;每个键最多只能映射到一个值。

    • HashMap : 键采用哈希表结构,允许null键null值,线程不安全

      • LikedHashMap<K, V> :采用 哈希表 + 链表 结构,保证键的插入顺序和迭代顺序一致

      • Hashtable<Object,Object> :键采用哈希表结构,允许null键null值,线程安全

      • Properties : 表示了一个持久的属性集。Properties 可保存在流中或从流中加载.性列表中每个键及其对应值都是一个字符串。

    • TreeMap : 键采用二叉树结构,对键进行排序

      • 自然排序 : Comparable<T> : 要求实体类实现该接口

      • 自定义排序 : Comparator<T> : 不需要实体类实现该接口,需要编写比较器

      • treeMap.forEach((k, v) >System.out.println(k + " ::: " + v));
  • //  V put(K key, V value) : 当键是第一次存入map时,返回 null ;
    // 如果不是第一次,用新值取代旧值,并将旧值作为返回值返回
    map.put('d', 4);
    // int size() 映射项的个数,返回此映射中的键-值映射关系数。
    System.out.println("map.size() = " + map.size());
    // V get(Object key)       根据键获取值
    // 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
    // Set<K> keySet() : 将所有的键提取出来存到 Set 中,返回此映射中包含的键的 Set 视图。
    // 删
    // V remove(Object key)
    // 果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
    Integer remove = map.remove(null);
    // void clear()
    // 从此映射中移除所有映射关系(可选操作)。
    // boolean containsKey(Object key)
    // 果此映射包含指定键的映射关系,则返回 true。
    System.out.println("map.containsKey('d')="+map.containsKey('d'));
    // boolean containsValue(Object value)
    // 如果此映射将一个或多个键映射到指定值,则返回 true。
    System.out.println("map.containsValue(1)="+map.containsValue(1));
    // boolean isEmpty()
    // 如果此映射未包含键-值映射关系,则返回 true。
    // JDK8.0新增
    // static <K,•V> Map<K,•V> copyOf•(Map<? extends K,•? extends V> map) 返回的是不可变映射
    //Map的遍历方式
    map.forEach((key, value2) -> {
          System.out.println(key + " ^_^ " + value2);
    });
    // default V getOrDefault•(Object key, V defaultValue) 8.0
    map.getOrDefault('a', 3306)
    // default V putIfAbsent•(K key, V value) : 存在就不添加,也不修改值,并且返回指定的键对应的值; 不存在时才添加
    Integer integer = map.putIfAbsent('n', 143);
    // default boolean remove•(Object key, Object value) : 根据键和值进行移除,必须该映射项的键和值完全匹配,才能移除掉
    boolean flag = map.remove('A', 1);
    // default V replace•(K key, V value)
    Integer replace = map.replace('e', 3333);
    // default boolean replace•(K key, V oldValue, V newValue)
    boolean replace1 = map.replace('Y', 25, 5555);
    // default void replaceAll•(BiFunction< K,• V,• V> function)
    map.replaceAll((k, v) -> v += 10);

泛型:操作的数据类型不确定的问题

  • 类的自定义泛型

    • 普通函数可以访问类上定义的泛型

    • 静态函数时不能访问类上定义的泛型

  • ? : 通配符

    • 上限: 从父类开始向下进行限制 ? extends E E 和 E的子类型

    • 下限: 从父类开始向下进行限制 ? super E E 和 E的父类型

  • 数组 ---> 集合 : 转换后不能使用集合的增删功能 , 否则 UnsupportedOperationException

    • Arrays : static <T> List<T> asList(T... a)

    • 返回一个受指定数组支持的固定大小的列表。

    • 引用型数组 : 转换后,数组中的元素作为集合中元素进行存储

    • 基本数据类型数组 : 转换后 , 数组本身作为集合的元素进行存储

  • 集合 ---> 数组,Collection 接口

    • // Object[] toArray() Object[] objects = list.toArray(); for (Object o : objects) { System.out.println("o = " + o); } // <T> T[] toArray(T[] a)

      String[] strings1 =  list.toArray(new String[0]);
      // Stream : 1.获取Stream 2.中间操作 3.终止操作 :forEach()是终止操作之一
      Stream<String> stream = Arrays.stream(strings1);// 获取到的Stream对象只能使用一次
      stream.forEach(System.out::println);
      // stream.forEach(System.out::println);// Stream对象第二次使用 会有 : IllegalStateException
      Arrays.stream(strings1).forEach(System.out::println);
    •  

标签:MAP,JAVA,映射,map,Object,System,println,key,泛型
From: https://www.cnblogs.com/tonnpo/p/17925237.html

相关文章

  • 十六,JAVA IO流
    //static<T>List<T> emptyList()  //     返回空的列表(不可变的)。  //static<K,V>Map<K,V> emptyMap()  //     返回空的映射(不可变的)。  //static<T>Set<T> emptySet()  //     返回空的set(不可变的)。......
  • Java基础-Spring篇
    Spring框架的七大模块SpringCore:框架的最基础部分,提供IoC容器,对bean进行管理。SpringContext:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。SpringDAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。SpringORM:提供了JPA、JDO、Hibernate......
  • Java静态类
    在Java中,静态类是一种特殊的类,它不能被实例化。静态类主要用于工具类或实现某些特定功能,例如工厂模式中的工厂类。要声明一个静态类,可以使用static关键字,如下所示:java复制代码publicstaticclassStaticClass{//静态类的成员和方法}静态类的特点如下:不能被实......
  • java基础语法api之随机数的介绍以及案例应用
    一:概述在实际开发应用中,我们都会看到,有许多的场景中需要使用到随机不确定的数。在这时,我们就需要用到API中的Random类。二:具体说明<1>JDK_API帮助文档中的说明Random:-该类的实例用于生成随机数构造方法:-Random():创建一个新的随机数生成器成员方法-intnextInt(intbound):获......
  • JavaWebDay4
    一:maven什么是maven:maven是apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具maven的作用:MAVEN项目的目录配置maven的环境的两种方法 导入meaven所写的exclusion应该在不想间接依赖的外面级写,比如a依赖b,b依赖c,那么不想要c的时候则在写依赖b的后面写ex......
  • spring:Exception in thread "main" java.lang.NoClassDefFoundError: org/springframe
     设置了父类框架<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/><!--l......
  • JavaScript(JS) 数组
    ​ JavaScript数组是一个可变长度的对象,用于存储多个值。数组的值可以是任何类型,包括数字、字符串、对象、函数等。参考文档:JavaScript(JS)数组-CJavaPy1、创建数组可以使用以下方式创建数组:使用方括号[]来创建一个空数组:JavaScriptconstarr=[]; 使用 A......
  • #yyds干货盘点#Java面试题
    线上接口负载剧增,快扛不住了,你的首选方案是什么遇到这样的问题,我们的第一反应应该是增加缓存。因为,增加缓存是解决系统性能问题最快速、最高效的方案,它能够快速提升系统的线性吞吐量,效果也最为明显。这就相当于是用空间来换取时间。曾经有人说过,缓存是解决性能问题的万金油,哪里存在......
  • JavaImprove--Lesson01--枚举类,泛型
    一.枚举认识枚举类枚举是一种特殊的类枚举的格式:修饰符 enmu  枚举类名{  名称1,名称2;  其它成员}//枚举类publicenumA{//枚举类的第一列必须是罗列枚举对象的名称X,Y,Z;privateStringname;publicStringgetName(){retu......
  • java操作redis
     springdataredis对jedis和lettuce进行了封装SpringDataRdis使用方式 ......