Map集合

简介: Map集合

一.map集合相关知识

1.集合最基本:增加,删除,修改,查看

package com.lz.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class demo1 {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
  @SuppressWarnings("rawtypes")
  Map<String,String>  map=new HashMap<>();
  //增加
  map.put("name", "圣诞节");
  map.put("age", "1");
  map.put("info", "士大夫");
  map.put("n", "圣诞节");
  //增加打印  查看所有
  System.out.println(map);
  //查看一个
  System.out.println(map.get("n"));
  //删除
  Object remove = map.remove("n");
  System.out.println("数据删除了:"+remove);//删除的数据
  //删除打印
  System.out.println(map);
  //修改 就是增加在原来的基础上将增加的值赋值到原来的基础上
  map.put("age", "123");
  System.out.println(map);
  /**
   * 注意在map  集合中如果没有指定泛型 设置values值时如果时数字  ""可有可无!
   */
}
}

效果图:

2特点:是以键值对的形式存储数据 ,

     没有继承connection接口所以遍历方法没有迭代器,没有下标也就时没有foreach  forei

只能通过: ketset方法    entryset(映射)进行遍历

2.1ketset方法遍历

Set keySet = map.keySet();
  for (Object object : keySet) {
    System.out.println("键:"+object+"值:"+map.get(object));
  }

效果图:

2.2entryset(映射)

//映射  entryset
    Set<Entry<String, String>> entrySet = map.entrySet();
         for (Entry<String, String> entry : entrySet) {
           System.out.println("键:"+entry.getKey()+"值:"+entry.getValue()); 
    }

效果图:

二.  统计某个对象的出现次数

1.思路: a.字符串切割 b.遍历数组,拿到单个 c.如果此字符串没有出现过,及value值为null,key默认值为1, 如果有了则key+1!

package com.lz.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class demo2 {
  public static void main(String[] args) {
    String str = "asdijfdsdifvhsdovpsasdjz";
    // 字符串变成数组
    char[] cs = str.toCharArray();
    // 定义map集合来接受 数组内容
    Map<Character, Integer> map = new HashMap<>();
    for (char c : cs) {
      Integer value = map.get(c);
      if (value==null) {
        map.put(c, 1);
      }else {
        map.put(c, value+1);
      }
    }
           Set<Entry<Character, Integer>> entrySet = map.entrySet();
          for (Entry<Character, Integer> entry : entrySet) {
            System.out.println("键:"+entry.getKey()+"-----:"+entry.getValue());  
    }  
  }
}

效果图:

三.泛型

1.为什么要使用泛型?

没有泛型:不健壮代码(编码没有问题,但是可能由于在多人所有是会出现错误)在运行是才会被错误暴露出来
泛型:将潜在问题暴露出来,早预防早解决(将运行期出现异常转成编码问题)
当然:也是为了在  实现通用的dao方法 (增加,删除,修改,查看)

       

package com.lz.map;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@SuppressWarnings("unused")
public class demo3 {
  @SuppressWarnings({ "rawtypes", "unchecked" })
  public static void main(String[] args) {
    Set set = new HashSet<>();
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(4);
    for (Object object : set) {
            if (Integer.valueOf(object.toString()) %2==0) {
        System.out.println(object);
      }
    }
  }
}
//举例子  类
//普通
class   UserDao extends BaseDao{
//  add(user  user);
//  del(user  user);
//  xg(user  user);
//  ack(user  user);
//  
//  
}
//泛型 
 class   BaseDao<T>{
  void  add(T  t) {}
  void  del(T  t){}
  void  xg(T  t) {}
  List<T> list(T  t){
    return   null;
  }
}
 //方法
 class  result {
   <T> void  del(T  t) {
   }
 }

四. 集合之间相互转化  排序 :sort  tostring

1.集合之间相互转化

package com.lz.map;
import java.util.Arrays;
import java.util.List;
public class demo4 {
public static void main(String[] args) {
  /**
   * 集合之间相互转化
   * 
   */
  String []  arr= {"x","e","q"};
  //数组变成集合
  List<String> list = Arrays.asList(arr);
  list.add("f");
  //集合变成数组
  Object[] array = list.toArray();
  System.out.println(Arrays.toString(array));
  System.out.println(list);
}
}

效果图:

注意会出现这样一个错误:ava.lang.UnsupportedOperationException

为什么?即使数组被更换成为集合,它的底层还是本质数组(数组长度不可变),所以添加不成功
那所有更换就是为了更好的操作数据所有要注释add

注释后效果图

2.排序 :sort  tostring

package com.lz.map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class demo5 {
public static void main(String[] args) {
  //sort ava.util
  List<String>list=new ArrayList<String>();
  list.add("q");
  list.add("d");
  list.add("f");
  System.out.println("没有排序"+list);
  Collections.sort(list);
  System.out.println("排序后"+list);
  // x y集合中的元素
  Collections.sort(list, (x,y)  ->   y.compareTo(x));
  System.out.println("倒序"+list);
  String []  arr= {"x","e","q"};
  //数组变成集合
  List<String> lists = Arrays.asList(arr);
//  list.add("f");
  // tostring
  System.out.println(Arrays.toString(array));
}
}

效果图:

 

相关文章
|
7月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
|
7月前
|
存储 JavaScript 前端开发
JavaScript进阶-Map与Set集合
【6月更文挑战第20天】JavaScript的ES6引入了`Map`和`Set`,它们是高效处理集合数据的工具。`Map`允许任何类型的键,提供唯一键值对;`Set`存储唯一值。使用`Map`时,注意键可以非字符串,用`has`检查键存在。`Set`常用于数组去重,如`[...new Set(array)]`。了解它们的高级应用,如结构转换和高效查询,能提升代码质量。别忘了`WeakMap`用于弱引用键,防止内存泄漏。实践使用以加深理解。
88 3
|
4月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
4月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
5月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
5月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
5月前
|
算法 Java 索引
【Java集合类面试四】、 描述一下Map put的过程
这篇文章详细描述了HashMap中put操作的过程,包括首次扩容、计算索引、插入数据以及链表转红黑树和可能的再次扩容。
【Java集合类面试四】、 描述一下Map put的过程
|
5月前
|
存储
|
5月前
|
安全 Java
【Java集合类面试五】、 如何得到一个线程安全的Map?
如何得到一个线程安全的Map的方法包括:使用Collections工具类将Map包装为线程安全,使用java.util.concurrent包下的ConcurrentHashMap,以及不推荐使用性能较差的Hashtable。
|
5月前
|
安全 Java
【Java集合类面试三】、Map接口有哪些实现类?
这篇文章介绍了Java中Map接口的几种常用实现类:HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap,以及它们适用的不同场景和线程安全性。