java-Map集合

新一
2021-11-16 / 0 评论 / 100 阅读 / 正在检测是否收录...

本章主要来讲HashMap、HashTable和treemap

HashMap"示例.

package Z.Kbzl.jihe;

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

public class  MapDemo{

    public static void main(String[] args) {
        Map map=new HashMap();//数据格式--key----》value
        //put 给map中存放数据,key一般使用String类型,但是对类型没有要求
        map.put("name", "张三");
        map.put("age", "18");
        map.put("score", "80");
        map.put(1, 100);
        System.out.println(map.get(1));
        //取数据 get(key)
        //map.clear();//清空map集合中的数据
        //map.remove("name");//根据key删除数据
        //删除数据后,如果根据key取不到值的话,返回null
        //System.out.println(map.get("name"));//打印name值
        
        //修改数据:因为在map中要求key必须唯一,如果添加相同的key,则会覆盖以前的值
        map.put("name", "李四");//覆盖以前的值
        System.out.println(map.get("name"));
        
        //获取map中所有的key
         System.out.println(map.keySet());
        //获取map中所有的value
         System.out.println(map.values());
        
         
         //判断map中是否包含某个key(标记、编辑相当于bean中的属性)
         if(map.containsKey("name")) {
             System.out.println(map.get("name"));
         }else {
             System.out.println("暂无数据........");
         }
         
         //判断map中是否包含某个value值
            //不过一般不推荐使用containsValue.
         if(map.containsValue("李四")) {
             System.out.println("有此人.....");
         }else {
             System.out.println("没有此人......");
         }
     
         //hashmap特点:首先key...value数据格式
         //是无顺序的,通过key来获取数据
         //是非线程安全的(异步、插队的意思),非线程安全可能会导致数据不安全
         
         //允许存放null键和null值  比如:map.put(null, null);
    }
}

我再写一个关于book图书馆的例子.

我们先创建一个类,写一些属性

package Z.Kbzl.jihe;
//这个类的程序我真不想多说.不写注释了
public class Book {

    
    String title;
    public Book() {
        // TODO Auto-generated constructor stub
    }
    
    public Book(String title) {
        super();
        this.title = title;
    }

    @Override
    public String toString() {
        return "Book [title=" + title + "]";
    }

}

再建一个测试类

package Z.Kbzl.jihe;

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

public class BookTest {

    public static void main(String[] args) {
        
        Map book=new HashMap();//创建HashMap对象
        
        Book book01=new Book("呐喊");//可以这样写
        book.put("book1", book01);//存值
        
        //一般是下面这种写法
        book.put("book2", "狂人日记");//对象名打点调用put方法存值
        book.put("book3", "彷徨");
        book.put("book4", "故事新编");
        
        //获取map中所有的key
         System.out.println(book.keySet());
        //获取map中所有的value
         System.out.println(book.values());
        
         if(book.containsKey("book1")) {//通过key来查询有没有此书
             System.out.println(book.get("book1"));
         }else {
             System.out.println("没有这本书.....");
         }
    }
}

复制代码的同时,一定要学会去理解.

我觉得我的注释比老师的都写的细.

以上代码就不复制打印结果了.

HashTable示例

package Z.Kbzl.jihe;

import java.util.Hashtable;
import java.util.TreeMap;

public class HashableDemo {

    public static void main(String[] args) {
        //Hashable  key----value
        Hashtable ht=new Hashtable();
        ht.put("name", "新一大帅哥");//put 存放数据
        ht.get("name");//get根据key获取数据
        ht.remove("删除数据");//remove根据key删除数据
        ht.clear();//clear 清空
        
       // ht.put(null, null);//不可以这样写
       // System.out.println(ht.get(null));//打印会报空指针错误
        

        
//Collection是所有集合的超类
        
//这里我再写一下list,因为这些真的都是重点!!!!

//ArrayList 数组结构,是有序(连续),可以通过下标来访问..
              //ArrayList 集合有序的,大小可变,查询效率高.
              
//LinkedList 底层链表结构,是有序(非连续结构)
            //查询效率比较低,添加,删除效率比较高
              //1.定义一个集合对象LinkedList
        
        
//对比hashmap和Hashtable的特点:
        
      //hashmap特点:首先key...value数据格式
         //是无顺序的,通过key来获取数据
         //是非线程安全的(异步),非线程安全可能会导致数据不安全
         //允许存放null键和null值  比如:map.put(null, null);
        
      //hashtable特点:首先key...value数据格式
         //是无顺序的,通过key来获取数据
         //不允许存放null键和null值
         //线程安全(同步),数据安全
         
//但是推荐以后使用hashmap,因为hashmap异步效率高.
    

还有一个treemap.

//treemap:二叉树(jdk1.8以后叫红黑树)算法,key有序,非线程安全
          TreeMap tr=new TreeMap();
          tr.put("1", "aaa");
          tr.put("12", "ccc");
          tr.put("11", "bbb");
          tr.put("15", "eee");
          tr.put("13", "ddd");
           //自带排序功能
          System.out.println(tr.keySet());//打印所有的key,且自带排序
         // tr.put(null, null);//不可以这样写
         //System.out.println(ht.get(null));//打印会报空指针错误
         //不允许存放null键和null值

以上都是重重点.

最后别忘了去看看思维导图.

本文共 1204 个字数,平均阅读时长 ≈ 4分钟
1

打赏

:D 获取中...

更多精彩文章,按Ctrl+D收藏本站!

评论 (0)

取消