Map集合

简介: Map集合

1.Map集合的特点:

map集合是以键值对形式存在。

可以进行增删改查。

键可以为空

public static void main(String[] args) {
  Map hashmap=new HashMap();
  //这是map集合添加数据的方式
  hashmap.put("zs",19 );
  hashmap.put("ls",19 );
  hashmap.put("ww",19 );
  hashmap.put("", 2);
  //这是map集合删除数据的方法
  hashmap.remove("zs");
  //这是map集合修改数据的方法
  hashmap.put("ls", 20);
  //这是map集合遍历的方式:第一种为froeach的方法,但是得使用泛型
   for (Object o : hashmap.entrySet() ) {
  Map.Entry m=(Entry) o;
  System.out.println("key:  "+m.getKey()+"   value:"+m.getValue());
}}

以上代码的运行结果为:

以上便是突出map集合特点的代码。

2.map集合遍历的方式

2.1第一种为froeach的方法,但是得使用泛型

  for (Object o : hashmap.entrySet() ) {
  Map.Entry m=(Entry) o;
  System.out.println("key:  "+m.getKey()+"   value:"+m.getValue());
}

运行结果为:

2.2 第二种则是将map集合中的键存放在set集合中,通过set集合遍历,然后根据键来获取value值

 Set set=hashmap.keySet();
   for (Object o : set) {
     System.out.println("key:  "+o+"   value:"+hashmap.get(o));
}

运行结果为:

以上便是map集合的遍历方法

3.常用实现类HashMap

3.1实现类HashMap的作用:

package com.xzs.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
/*
 * 这是一个利用hashmap集合统计字母出项的次数的方法
 */
public class Demo2 {
  public static void main(String[] args) {
        String s = "adfjakjdflkajlfjsalkfjdklqajwlekrjlkamfdklasjklrfejqkfnmsfdakhjfdklawjerklwjmfl";
        char[] chars = s.toCharArray();
        Map map = new HashMap();
        for (char c : chars) {
            Object o = map.get(c);
            if (o == null){
                map.put(c,1);
            }else {
                map.put(c,Integer.valueOf(o.toString())+1);
            }}
       for (Object c : map.entrySet()) {
    Map.Entry m=(Entry) c;
    System.out.println("key:  "+m.getKey()+"   value:"+m.getValue());
  }
    }
}

运行结果为:

由此可以看出HashMap的作用是可以用来统计字母出现的次数,多运用于验证码接口数据的接收

4.泛型

4.1泛型的作用:

将运行时产生的异常转换为编译期的错误    提高代码的健壮性

public static void main(String[] args) {
//      将运行时产生的异常转换为编译期的错误
//      提高代码的健壮性
     List list= new arrylist<>();
     list.add(1);
      list.add(2);
 list.add(3);
 list.add(4); 
list.add(5);
      for (Object o : list) {
          int num=(Object) o;
if(num%2==1){
System.out.println(num);
}
      }
  }

结果为:

由此我们可以看出泛型的重要性,它可以杜绝代码在运行过程中报错;

4.2泛型类

由此图可以看出当我们类为泛型类是添加的数据将被指定为泛型所指定的数据类型,且在后面的学习中泛型可以为我们减少许多代码量

/class CommonDao{
//    public List list(Object o){
//        System.out.println("数据库的通用查询方法...");
//        return null;
//    }
//}
//class Book{
//
//}
//class Order{
//
//}
//class BookDao extends CommonDao{
//
//}
//class OrderDao extends CommonDao{
//    @Override
//    public List list(Object o) {
//        return super.list(o);
//    }
//}
//使用泛型...................
class CommonDao<T>{
    public List<T> list(T o){
        System.out.println("数据库的通用查询方法...");
        return null;
    }
}
class Book{
}
class Order{
}
class BookDao extends CommonDao<Book>{
}
class OrderDao extends CommonDao<Order>{
    @Override
    public List<Order> list(Order o) {
        return super.list(o);
    }
}

在上面的代码中可以看出以后的Dao方法的代码量将大大减少

5,集合框架工具类(Collections.Arrays)

5.1Collections的使用

package com.xzs.map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo5 {
  public static void main(String[] args) {
    List<Person> set = new ArrayList<>();
    set.add(new Person("zs", 18));
    set.add(new Person("ls", 14));// distrinct
    set.add(new Person("ww", 24));
    set.add(new Person("老六", 22));
    set.add(new Person("zs", 18));
    Object[] array = set.toArray();
    for (Object object : array) {
      System.out.println(object);
    }
    System.out.println("======list集合中元素实现Comparable接口才能排序========");
    Collections.sort(set);
    for (Object object : set) {
      System.out.println(object);
    }
  }
}
class Person implements Comparable<Person>{
  private String name;
  private int age;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
  }
  @Override
  public String toString() {
    return "Person [name=" + name + ", age=" + age + "]";
  }
  @Override
  public int compareTo(Person o) {
    return this.name.compareTo(o.name);
  }
}

上列代码是Collections的使用方法结果为:

5.1Collections对于引用对象的条件

package com.xzs.map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo5 {
  public static void main(String[] args) {
    List<Person> set = new ArrayList<>();
    set.add(new Person("zs", 18));
    set.add(new Person("ls", 14));// distrinct
    set.add(new Person("ww", 24));
    set.add(new Person("老六", 22));
    set.add(new Person("zs", 18));
    Object[] array = set.toArray();
    for (Object object : array) {
      System.out.println(object);
    }
    System.out.println("======list集合中元素实现Comparable接口才能排序========");
    Collections.sort(set);
    for (Object object : set) {
      System.out.println(object);
    }
  }
}
class Person implements Comparable<Person>{
  private String name;
  private int age;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
  }
  @Override
  public String toString() {
    return "Person [name=" + name + ", age=" + age + "]";
  }
  @Override
  public int compareTo(Person o) {
    return this.name.compareTo(o.name);
  }
}

以上可以看出应勇对象必须实现comparable

5.3Arrays

package com.xzs.map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Demo6 {
  public static void main2(String[] args) {
        List list = new ArrayList();
        list.add("b");
        list.add("a");
        list.add("c");
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        System.out.println(list);
        Object[] objects = list.toArray();
        System.out.println(objects);
    }
    public static void main(String[] args) {
        String[] arr = new String[]{"a","c","b"};
        List<String> list = Arrays.asList(arr);
        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        System.out.println(list);
//        数组变成List后,只是能够用集合的方法操作数组,不能改变数组长度不可变的既定事实
//        Exception in thread "main" java.lang.UnsupportedOperationException
//        list.add("d");
        System.out.println(Arrays.toString(arr));
    }
}

运行的结果为:

 


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