java中如何使用map存取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何使用map存取数据相关的知识,希望对你有一定的参考价值。

java中使用map存取数据的方法如下:

1、需要指定其中的K,V;k=keyv=value。

2、指定其中K、V的类型。

3、接下来往map中添加数据。

4、需要注意的是,如果map中已经存在的key,后面添加的会覆盖掉当前值。

接下来对map进行遍历输出。可以看到其中a的值已经被覆盖,此时就已经使用map存储好数据了。

参考技术A 1.声明一个map: Map map = new HashMap();
2.向map中放值,注意:map是key-value的形式存放的.如:

map.put(”sa”,”dd”);

3.从map中取值:String str = map.get(”sa”).toString();结果是:str = ”dd”;
4.遍历一个map,从中取得key 和value
Map map = new HashMap() ;

Iterator it = map.entrySet().iterator() ;
while (it.hasNext())

Map.Entry entry = (Map.Entry) it.next() ;
Object key = entry.getKey() ;
Object value = entry.getValue() ;
参考技术B import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
* Map
* -- HashMap
* -特点: 1、可以使用NULL值 和NULL键
* 2、不同步
* (除了非同步和允许使用NULL,其他与HashTable 没什么区别)
* -方法
* 如下
* @author caihai
*
*/
public class HashMapDemo
public static void main(String args[])

System.out.println("HashMap:----------------------------------");
Map<String,Integer> hashmap=new HashMap<String,Integer>();
//按键-值的方式 存入数据
hashmap.put("1", 1);
hashmap.put("2",2);
hashmap.put("4",4);
hashmap.put("3",3);
hashmap.put(null,null);
//containsKey
System.out.println("判断是否含有”1“此键"+hashmap.containsKey("1"));
System.out.println("-------------------------------------------");
//containsValue
System.out.println("判断时候含有”1“此值"+hashmap.containsValue(1));
System.out.println("-------------------------------------------");
//遍历MAP 的二种方法
//keySet
System.out.println("利用keyset方式 遍历MAP");
Set<String> keyset=hashmap.keySet();
for(String ks:keyset)

System.out.println("keyset---key:"+ks+" value:"+hashmap.get(ks));

System.out.println("-------------------------------------------");
System.out.println("利用entrySet方式 遍历MAP");
Set<Map.Entry<String, Integer>> entryset=hashmap.entrySet();
for(Map.Entry<String,Integer> entry:entryset)

System.out.println("entryset---key:"+entry.getKey()+" value:"+entry.getValue());

System.out.println("-------------------------------------------");
System.out.println("判断Hashmap是否为空"+hashmap.isEmpty());
System.out.println("-------------------------------------------");
System.out.println("通过get(Object key)获得对应值"+hashmap.get(null));
System.out.println("-------------------------------------------");
System.out.println("计算Map的大小"+hashmap.size());
Map<String,Integer> insertmap=new HashMap<String,Integer>();
insertmap.put("100",100);
insertmap.put("101",101);
insertmap.put("102",102);
System.out.println("-------------------------------------------");
System.out.println("将MAP加入到MAP中");
hashmap.putAll(insertmap);
Set<String> keyseti=hashmap.keySet();
for(String ks:keyseti)

System.out.println("key:"+ks+" value:"+hashmap.get(ks));

System.out.println("-------------------------------------------");
System.out.println("Get the Map values ,return Collection:");
Collection<Integer> values=hashmap.values();
Iterator<Integer> it=values.iterator();
while(it.hasNext())

System.out.println("The value: "+it.next());


参考技术C 通过键值对的方式进行存取数据的

Java学习笔记32(集合框架六:Map接口)

Map接口与Collection不同:

Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合

Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为双列集合

Map中存入的是:键值对,键不可以重复,值可以重复

 

Map接口中的常用集合:

1.HashMap:哈希表的存储结构,但是无法保证存取顺序

2.LinkedHashMap:存储数据采用的是哈希表和链表,可以有顺序

 

Map接口的常用方法:

示例:

package demo;

import java.util.HashMap;
import java.util.Map;

public class MapDemo {
    public static void main(String[] args) {
        function1();
        function2();
        function3();
    }

    public static void function1() {
        // 将键值对存储到集合中
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("c", 4);
        System.out.println(map);
        // {b=2, c=4, a=1}
        // =连接键值对,存入重复键,则会覆盖
    }

    public static void function2() {
        //通过键获取值
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        String value = map.get(1);
        System.out.println(value);//a
        //有则返回值,不存在返回null
    }
    public static void function3(){
        //移除集合中的键值对
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.remove(3);
        System.out.println(map);
        //{1=a, 2=b}
    }
}

 

Map接口的遍历:

第一种方式:

package demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapDemo {
    public static void main(String[] args) {
        function1();
        function2();
    }

    public static void function1() {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        Set<String> set = map.keySet();
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            String key = it.next();
            Integer value = map.get(key);
            System.out.println(key + "<==>" + value);
        }
    }

    public static void function2() {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        for (String key : map.keySet()) {
            Integer value = map.get(key);
            System.out.println(key + "<==>" + value);
        }
    }
}
// 遍历输出的无序

 

第二种方式(根据映射关系):

package demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapDemo {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        Set<Entry<Integer, String>> set = map.entrySet();
        Iterator<Entry<Integer, String>> it = set.iterator();
        while (it.hasNext()) {
            Entry<Integer, String> entry = it.next();
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "<==>" + value);
        }
    }
}

 

存储自定义对象:

 

package demo;

public class 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;
    }

    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

}
package demo;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

//存储自定义类型
public class HashMapDemo {
    public static void main(String[] args) {
        function1();
        function2();
    }

    public static void function1() {
        // 自定义类型作为值出现
        HashMap<String, Person> map = new HashMap<String, Person>();
        map.put("a", new Person("1", 20));
        map.put("b", new Person("2", 20));
        map.put("c", new Person("3", 20));
        // 利用两种遍历
        for (String key : map.keySet()) {
            Person value = map.get(key);
            System.out.println(key + "<==>" + value);
        }
        for (Entry<String, Person> entry : map.entrySet()) {
            String key = entry.getKey();
            Person value = entry.getValue();
            System.out.println(key + "<==>" + value);
        }
    }

    public static void function2() {
        // 自定义类型作为键出现
        // 保证键的唯一性,需要重写hashcode和equals方法
        HashMap<Person, String> map = new HashMap<Person, String>();
        map.put(new Person("a", 20), "a");
        map.put(new Person("b", 20), "a");
        map.put(new Person("c", 20), "a");
        map.put(new Person("c", 20), "a");
        // 两种遍历
        for (Person key : map.keySet()) {
            String value = map.get(key);
            System.out.println(key + "<==>" + value);
        }
        for (Entry<Person, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "<==>" + entry.getValue());
        }
    }

}

 

LinkedHashMap集合:

package demo;

import java.util.LinkedHashMap;

public class LinkedHashMapDemo {
    public static void main(String[] args) {
        LinkedHashMap<String, String> link = new LinkedHashMap<String, String>();
        link.put("1", "a");
        link.put("2", "a");
        link.put("3", "a");
        link.put("4", "a");
        System.out.println(link);
        //{1=a, 2=a, 3=a, 4=a}
        //存取顺序一致
    }
}

 

set接口下还有一个hashtable集合,但是过时了,现在由hashmap取代

不过,要注意一个问题:

HashMap允许存储null值,HashTable不允许存储null值,两种都不允许存储null键

 

以上是关于java中如何使用map存取数据的主要内容,如果未能解决你的问题,请参考以下文章

java session如何存取数据

java 本地数据存储问题

使用java语言操作,如何来实现MySQL中Blob字段的存取

Map集合存取数据排序问题

java中如何不使用map功能

java容器的一些存取用法