Java中Map和Vector集合

Map集合

map集合的使用

package com.cloud.map;

import java.util.HashMap;

import java.util.Map;

public class Demo1 {

/*

   双列集合:

   Map:实现Map接口的集合类,具备的特点:存储的数据都是以键值对的方式,键不可以重复,值可重复

*/

   public static void main(String[] args) {

      Map<String,String> map = new HashMap<String,String>();

      map.put("1", "aaa");

      map.put("2", "bbb");

      map.put("3", "ccc");

      /*添加常用的方法

      //这里返回null:表示4这个键以前没有关联的值

      System.out.println(map.put("4", "ddd"));

      //这里输出关联的值ddd,会被abc覆盖

      map.put("5", "abc");

      System.out.println(map.put("4", "abc"));

      Map<String,String> map2 = new HashMap<String,String>();

      map2.put("6", "eee");

      map2.put("1", "aaa");

      map2.put("1", "ert");

      map.putAll(map2);

      */

      /*删除数据常用的方法

      System.out.println("删除的数据:"+map.remove("1"));

      map.clear();

      */

      /*获取方法

      System.out.println(map.get("1"));

      System.out.println(map.size());

      */

      /*判断的方法

      System.out.println(map.containsKey("1"));

      System.out.println(map.containsValue("aaa"));

      map.clear();

      map.put(null, null);

      System.out.println(map.isEmpty());

      */

      System.out.println("集合元素:"+map);

   }

}

HashMap的使用

package com.cloud.map;

import java.util.HashMap;

import java.util.Map;

public class Demo2 {

/*

HashMap

   底层使用hash表来实现

   HashMap中添加元素的时候,首先调用键的hashCode方法得到元素的哈希码的值,经过运算,得

   到该元素在哈希表中的位置;

   1.如果该位置没有存储元素,则元素之间添加到哈希表中

   2.如果该位置有其他的元素,会调用元素的equals方法,如果返回false,该元素被储存,返回

     true,该元素重复不能存储

*/

   public static void main(String[] args) {

      Map<Person,String> map = new HashMap<Person,String>();

      map.put(new Person(1,"a"), "aaa");

      map.put(new Person(2,"b"), "bbb");

      map.put(new Person(3,"c"), "ccc");

      map.put(new Person(1,"a"), "ddd");

      System.out.println("集合的元素:"+map);

   }

}

class Person{

   private int id;

   private String name;

   public Person(int id,String name){

      this.id=id;

      this.name=name;

   }

   @Override

   public String toString() {

      return "[编号:"+this.id+";姓名:"+this.name+"]";

   }

   @Override

   public int hashCode() {

      // TODO Auto-generated method stub

      return this.id;

   }

   @Override

   public boolean equals(Object obj) {

      Person p=(Person) obj;

      return this.id==p.id;

   }

}

TreeMap的使用

package com.cloud.map;

import java.util.Comparator;

import java.util.TreeMap;

public class Demo3 {

/*

TreeMap:基于二叉树的数据结构实现的,会对具备自然特性的键进行排序存储

1.元素的键具备自然特性,直接排序存储

2.不具备自然特性,实现Comparable接口,在ComparaTo中定义排序规则

3.不具备自然特性,没有实现Comparable接口,在创建TreeMap对象的时候传入比较器

 */

   public static void main(String[] args) {

      //创建一个比较器

      MyComparator my=new MyComparator();

      TreeMap<Emp,String> map=new TreeMap<Emp,String>(my);

      /*map.put('c', 3);

      map.put('b', 2);

      map.put('a', 1);*/

      map.put(new Emp("a",5000), "6");

      map.put(new Emp("b",4000), "5");

      map.put(new Emp("c",3000), "4");

      map.put(new Emp("d",2000), "3");

      //下面e的值1就会覆盖d的值3

      map.put(new Emp("e",2000), "1");

      System.out.println(map);

   }

}

class Emp /*implements Comparable<Emp>*/{

   String name;

   int sarlary;

   public Emp(String name,int sarlary){

      this.name=name;

      this.sarlary=sarlary;

   }

   @Override

   public String toString() {

      return "[姓名:"+this.name+";薪水:"+this.sarlary+"]";

   }

   /*@Override

   public int compareTo(Emp o) {

      return this.sarlary-o.sarlary;

   }*/

}

//自定义一个比较器

class MyComparator implements Comparator<Emp>{

   @Override

   public int compare(Emp o1, Emp o2) {

      return o1.sarlary-o2.sarlary;

   }

}

Vector集合

package com.cloud.vector;

import java.util.Enumeration;

import java.util.Vector;

public class Day1 {

   /*

   Vector 底部维护Object数组,实现和ArrayList一样,但是Vector是线程安全,效率低,二者比较:

   相同点:

      1.底部都是维护Object的数组

   不同点:

      1.ArrayList线程不同步,效率高

      2.ArrayList JDK1.2出现,Vector JDK1.0出现

   */

   public static void main(String[] args) {

      Vector v=new Vector();

      v.addElement("Spring1");

      v.addElement("Spring2");

      v.addElement("Spring3");

      Enumeration e = v.elements();

      while(e.hasMoreElements()){

        System.out.println(e.nextElement());

      }

   }

}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值