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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/88850525

背景:现在各种线上视频教程、各种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<String> hs = new HashSet<String>();
		// HashSet把重复的元素去掉了
		hs.add("BMW");
		hs.add("Honda");
		hs.add("Benz");
		hs.add("Honda1");
		hs.add("Benz2");

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

		// LinkedHashSet保证有序
		Set<String> ls = new LinkedHashSet<String>();
		// 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<String> ts = new TreeSet<String>();
		// 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<String> as = new ArrayList<String>();
		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<Integer, String> hashmap = new HashMap<Integer, String>();
		// 键值对的增加元素
		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<Integer, String> 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<Map.Entry<Integer, String>> it = hashmap.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<Integer, String> entry = it.next();
			System.out.println("key= " + entry.getKey() + " and value= "
					+ entry.getValue());
		}

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

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

	}
}

3、有什么区别需要自己不断总结,而不是看看别人的代码就能明白了,还需要多使用。

猜你喜欢

转载自blog.csdn.net/u011466469/article/details/88850525
今日推荐