Java集合Map

Java集合汇总开始看起吧,重父类的Collection讲起。

  • Map接口
    • |----HashMap(类):Map的主要实现类
    • |----LinkedHashMap(类):使用链表维护添加进Map中的顺序,遍历Map时,按照添加顺序遍历
    • |----TreeMap(类): 按照添加进入Map中元素的key的指定属性排序。【自然排序,定制排序】。key必须是同一个类的对象。是同种类型的数据
    • |----Hashtable(类):Hashtable是一个古老的Map实现类。线程安全。不建议使用
    •     |----Properties(类): 是Hashtable的子类,常用来处理属性文件。键和值都是String类型。

从HashMap讲解Map的添加,删除,遍历操作

  1. HashMap : Key 使用Set来存放的,不可重复。value用Collection存放的,可以重复。 一个对,是一个Entry,所有的Entry是Set存放的,不可重复。
  2. 向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同,如果相同,则只能添加上后添加那个元素。
    Map—添加,删除操作:
   /**
     * Object put(Object key,Object value)  向map中添加一个元素
	 * Object remove(Object key)  按照指定的key,删除这一对<key,value>,返回值是key对应的value
	 * void putAll(Map t)
	 * void clear()  清空map
	 * Object get(Object key)  获取指定key对应的value值,如果没有此key,返回null
	 * boolean containsKey(object key)  判断是否包含某个key
	 * boolean containsValue(Object value)  判断是否包含某个value
	 * int size()  返回集合长度
	 * boolean isEmpty() 判空
	 * boolean equals(Object obj)
	 */  	
	@Test
	public void test1() {
		Map map = new HashMap();
		map.put("AA", 15);
		map.put("GG", 16);
		map.put("BB", 10);
		map.put(123, "HH");
		map.put(null, 15);
		map.put(null, null);
		map.put(14, null);
		System.out.println(map.size());
		map.remove("BB");
		System.out.println(map);
		System.out.println(map.containsKey(123));
		System.out.println(map.containsValue(null));
	}

遍历Map

   /**
     *  Set keySet() 遍历key
	 *  Collection values()  遍历value
	 *  Set entrySet() 遍历entry(key-value键值对)
	 */
	@Test
	public void test2() {
		Map map = new HashMap();
		map.put("AA", 15);
		map.put("GG", 16);
		map.put("BB", 10);
		map.put(123, "HH");
		map.put(new Person("DD", 50), 89);

		/**
		 * 1. 遍历key
		 *  key存在Set中
		 */
		Set set = map.keySet();
		for (Object obj : set) {
			System.out.println(obj);
		}
		System.out.println("***************");

		/**
		 * 2. 遍历value
		 *  value存在Collection中
		 */
		Collection value = map.values();
		for (Object obj : value) {
			System.out.println(obj);
		}
		System.out.println("************");

		/**
		 * 3. 遍历entry
		 *  方法一:
		 */
		Set set1 = map.keySet();
		for (Object obj : set) {
			System.out.println(obj + "---->" + map.get(obj));
		}
		System.out.println("************");
		// 方法二:
		Set set2 = map.entrySet();
		for (Object obj : set2) {
			Entry en = (Entry) obj;
			System.out.println(en);
		}
	}

LinkedHashMap

@Test
	public void test() {
		Map map = new LinkedHashMap();
		map.put("AA", 15);
		map.put("GG", 16);
		map.put("BB", 10);
		map.put(123, "HH");
		map.put(null, 15);
		map.put(new Person("DD", 50), 89);

		Set set = map.entrySet();
		for (Object object : set) {
			System.out.println(object);
		}
	}	

TestTreeMap

   /**
     * 按照添加进入Map中元素的key的指定属性排序。
	 * 要求:key必须是同一个类的对象。是同种类型的数据
	 * 针对key:自然排序  vs  定制排序
	 */
	public class TestTreeMap {
		/**
		 * 自然排序
		 */
		@Test
		public void test() {
			Map map = new TreeMap();
			map.put(new Person("AA", 23), 89);
			map.put(new Person("MM", 22), 95);
			map.put(new Person("GG", 23), 55);
			map.put(new Person("JJ", 13), 23);

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

		/**
		 * 定制排序
		 */
		@Test
		public void test1() {
			// 匿名实现接口
			Comparator com = new Comparator() {
				@Override
				public int compare(Object o1, Object o2) {
					if (o1 instanceof Customer && o2 instanceof Customer) {
						Customer c1 = (Customer)o1;
						Customer c2 = (Customer)o2;
						int i = c1.getId().compareTo(c2.getId());
						if (i == 0) {
							return c1.getName().compareTo(c2.getName());
						}else {
							return i;
						}
					}
					return 0;
				}
			};

			Map map = new TreeMap(com);
			map.put(new Customer(15, "AA"), 20);
			map.put(new Customer(10, "GG"), 21);
			map.put(new Customer(26, "CC"), 2);
			map.put(new Customer(26, "BB"), 2);
			map.put(new Customer(5, "ZZ"), 69);

			Set set = map.entrySet();
			for (Object object : set) {
				System.out.println(object);
			}
		}
	}

Hashtable

   /**
	 * Hashtable是一个古老的Map实现类。线程安全。不建议使用
	 * 不允许使用null值。不能保证key-value对的顺序。
	 * 判断key相等,value相等的标准与hashMap相同。
	*/

Properties


	/**
	 * Properties:是Hashtable的子类:
	 * 常用来处理属性文件。键和值都是String类型。
	*/
	// 使用Properties处理属性文件。
	@Test
	public void test() throws FileNotFoundException, IOException {
		Properties pro = new Properties();
		pro.load(new FileInputStream(new File("jdbc.properties")));
		String user = pro.getProperty("user");
		System.out.println(user);
		String pwd = pro.getProperty("pwd");
		System.out.println(pwd);
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值