Java编程基础之Set和Map的简单使用

背景:现在各种线上视频教程、各种blog,随便搜索都能抓出一大把资料,大同小异,所以本人只是记录,相当于笔记吧,或许价值不高的原因只有自己看得懂。

1、Set集合在使用Jmeter做接口测试写数据库断言时用过。往后会将封装此类方法在JMeter里使用。今天且看代码:

package com.java.list;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/*
 */
public class SetDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建对象,<>尖括号表示的是泛型:定义元素集合的数据类型,set是一个接口,HashSet是实现接口的类
		Set hs = new HashSet();
		// HashSet把重复的元素去掉了
		hs.add("BMW");
		hs.add("Honda");
		hs.add("Benz");
		hs.add("Honda1");
		hs.add("Benz2");

		System.out.println("原集合存取顺序:" + hs);
		// 迭代器,遍历取值
		Iterator ite = hs.iterator();
		while (ite.hasNext()) {
			System.out.println(ite.next());
		}
		// for (String str : hs) {
		// // HashSet 不保证元素存取顺序一样,所以熟读比较快
		// System.out.println("取出顺序:" + str);
		// }

		// LinkedHashSet保证有序
		Set ls = new LinkedHashSet();
		// hashset把重复的元素去掉了
		ls.add("BMW");
		ls.add("Honda");
		ls.add("Benz");
		ls.add("Honda");
		for (String str2 : ls) {
			// hashset 不保证元素存取顺序一样,所以熟读比较快
			System.out.println("linkedhashset的顺序" + str2);
		}

		// TreeSet 以自然排序的方法给元素排序,没有hashset快
		Set ts = new TreeSet();
		// hashset把重复的元素去掉了
		ts.add("BMW");
		ts.add("Honda");
		ts.add("Benz");
		ts.add("Honda");
		for (String str1 : ts) {
			// hashset 不保证元素存取顺序一样,所以熟读比较快
			System.out.println("treeset的顺序" + str1);
		}

		System.out.println(ts);
		List as = new ArrayList();
		as.add("hello");
		as.add("hello");
		// System.out.println(as);

	}
}

2、Map代码里有迭代器的使用及其他遍历取值方式:

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;


public class DiffMapDemo {

	public static void main(String[] args) {
		// map接口创建应用实现对象
		Map hashmap = new HashMap();
		// 键值对的增加元素
		hashmap.put(1, "BMW");
		hashmap.put(6, "Audi");
		hashmap.put(2, "Honda");

		// 输出map的元素列表
		System.out.println("输出hashmap的元素,默认自然排序取出"+hashmap);
		// get()方法获取key的值,如果元素不存在的key,get会返回null
		String value1 = hashmap.get(1);
		System.out.println("get()方法通过key获取值:"+value1);

		// 第一种遍历取值方式:推荐,尤其是容量大时
		System.out.println("\n通过Map.entrySet遍历key和value");
		for (Map.Entry entry : hashmap.entrySet()) {
			int key = entry.getKey();
			String value = entry.getValue();
			System.out.println("键:" + key + " 值:" + value);

		}

		// 第二种方式取值:
		System.out.println("\n通过Map.keySet遍历key和value:");
		for (Integer key : hashmap.keySet()) {
			String value = hashmap.get(key);
			System.out.println("键:" + key + " 值:" + value);
		}

		// 第三种
		System.out.println("\n通过Map.values()遍历所有的value,但不能遍历key");
		for (String v : hashmap.values()) {
			System.out.println("value= " + v);
		}

		// 第四种
		System.out.println("\n通过Map.entrySet使用iterator遍历key和value:");
		Iterator> it = hashmap.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry = it.next();
			System.out.println("key= " + entry.getKey() + " and value= "
					+ entry.getValue());
		}

		// 有序,保证怎么存,取就是怎么样的顺序
		Map linkedhashmap = new LinkedHashMap();
		linkedhashmap.put(1, "BMW");
		linkedhashmap.put(6, "Audi");
		linkedhashmap.put(2, "Honda");
		System.out.println("\nlinkedhashmap的顺序:" + linkedhashmap);

		// 保证自然排序,
		Map treemap = new TreeMap();
		treemap.put(1, "BMW");
		treemap.put(6, "Audi");
		treemap.put(2, "Honda");
		System.out.println("\ntreemap的顺序:" + treemap);

	}
}

3、两者具体有什么区别,在什么场景下使用,需要了解底层实现原理,以及自己不断的使用经验总结,而不是看看别人的代码就能明白的,还需要自己多动脑勤动手。

你可能感兴趣的:(Java编程基础)