【Java SE 代码回顾】——day06_HashMap、HashSet、增强for循环

这个系列是对javaSE课程代码的回顾,所有Demo都是亲自动手实现的,并做了小小的change,为了方便自己理解和后期复习,代码里加了大量的注释。现对所有知识点的代码进行复习整理,进一步理解、完善代码,对注释进行补充。其中重要的知识点会单独说明,但主要以代码为主。

说明:博客是对学习内容的巩固,很多注释是为了自己理解,所以不会很专业。

 ------------------------------------------------------HashMap------------------------------------------------

package cn.tjpu.javase06.HashMap;
/**
 * HashMap用法
 */
import java.util.HashMap;

public class HashMapDemo {
		
		public static void main(String[] args) {
			
			//创建一个HashMap
			HashMap<String,String> map=new HashMap<>();
			
			//向map中添加数据(键值,值)
			map.put("1", "牛奶");
			map.put("2", "面包");
			map.put("3", "可乐");
			
			//通过键值拿到map中的某个值
			String a=map.get("1");
			System.out.println(a);
			
			//打印HashMap长度
			int size=map.size();
			System.out.println(size);
			
			//通过键值移除数据
			String c=map.remove("2");
			System.out.println(c);
			
			//验证是否移除数据
			//1.再次获取数据
			//String d=map.get("2");
			//System.out.println(d);
			
			//2.用containsKey()方法验证,被移除返回布尔值false
			boolean e=map.containsKey("1");
			System.out.println(e);
			
			
			
		}
}

 

package cn.tjpu.javase06.HashMap;
/**
 * 利用hashmap找重复商品并按如下方式打印:
 * 2,4,5-->香蕉
 * 1,3-->牛奶
 * 6-->橘子 
 */
import java.util.HashMap;
import java.util.Set;

import cn.tjpu.javase05.shop.Product;

public class HashMapTest {

	public static void main(String[] args) {

		// 造几个商品并放入HashMap中(产品id作为键值,产品对象作为值)
		Product p1 = new Product("1", "牛奶", 2.1f, 1);
		Product p2 = new Product("2", "香蕉", 2.2f, 2);
		Product p3 = new Product("3", "牛奶", 2.1f, 3);
		Product p4 = new Product("4", "香蕉", 2.2f, 4);
		Product p5 = new Product("5", "香蕉", 2.2f, 5);
		Product p6 = new Product("6", "橘子", 2.3f, 6);

		HashMap<String, Product> pdtMap = new HashMap<>();

		pdtMap.put(p1.getPId(), p1);
		pdtMap.put(p2.getPId(), p2);
		pdtMap.put(p3.getPId(), p3);
		pdtMap.put(p4.getPId(), p4);
		pdtMap.put(p5.getPId(), p5);
		pdtMap.put(p6.getPId(), p6);

		/*
		 * 找出hashmap中产品名称重复的数据,并打印出发生了重复的数据产品id
		 */
		// 构造一个新的hashmap(newMap)
		HashMap<String, String> newMap = new HashMap<>();
		// 取出map中的所有键值(id),放入一个集合
		Set<String> keySet = pdtMap.keySet();
		// 遍历这个键值集合
		for (String id : keySet) {
			// 通过键值拿到id的产品对象
			Product p = pdtMap.get(id);
			// 然后判断,这个product对象的name在新hashmap是否存在
			if (newMap.containsKey(p.getPName())) {
				// 如果已存在,则将之前的id拼上这个product的id作为value覆盖进去
				String pid = newMap.get(p.getPName());// 从新的map中取出已存在的产品id
				// 新map中(键值是名字,值是重复商品的id)
				newMap.put(p.getPName(), pid + "," + p.getPId());// 将新map中的产品id拼上这次从老map中取出的产品的id
			} else {
				// 如果尚不存在,则将这个product对象的name作为key,id作为value放入新的hashmap中
				newMap.put(p.getPName(), p.getPId());
			}

		}
		// 遍历新map并打印
		Set<String> keySet2 = newMap.keySet();
		for (String name : keySet2) {
			String ids = newMap.get(name);
			System.out.println(ids + "-->" + name);

		}

		/**
		 * hashmap调用keyset()方法才能遍历 hashmap对象get(键值)-->返回value值
		 */
	}
}
package cn.tjpu.javase06.HashMap;
/**
 * 利用Hashmap统计每个字母出现的次数
 * 字符串 "a,b,c,d,e,f,g,h,b,b,b,c,x,x,y,x,b"
 * 结果打印如下:
	a,1
	b,5
	c,2
 */
import java.util.HashMap;
import java.util.Set;

public class HashMapCountWord {

	public static void main(String[] args) {

		String str = "a,b,c,d,e,f,g,h,b,b,b,c,x,x,y,x,b";
		// 将字符串按逗号切割然后存入字符串数组
		String[] s1 = str.split(",");
		// 建一个hashmap,用来存放字母及其对应出现次数
		HashMap<String, Integer> count = new HashMap<>();

		// 增强循环,遍历数组中的字母
		for (String ch : s1) {
			// 判断hashmap中的键值中是否包括数组中的字母
			if (count.containsKey(ch)) {
				// 如果字母已存在,通过键值,拿到其值(字母出现次数)
				Integer c = count.get(ch);
				// 将次数+1再把键值和值放回hashmap中
				count.put(ch, c + 1);
			} else {
				// 如果数组中某个字母还没在hashmap中,就把字母和它目前出现的次数1放入map中
				count.put(ch, 1);
			}

		}

		/**
		 * 遍历hashmap,打印数据
		 */
		// 先取出所有的key存入一个集合
		Set<String> keyset = count.keySet();
		// 然后遍历集合中一个一个的key,从map中取value

		for (String key : keyset) {
			Integer vaule = count.get(key);
			System.out.println(key + "," + vaule);
		}
	}
}

 ------------------------------------------------------HashSet------------------------------------------------

package cn.tjpu.javase06.HashMap;

/**
 * HashSet的用法
 */
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

import cn.tjpu.javase05.shop.Product;

public class HashSetDemo {

	public static void main(String[] args) {

		// 创建一个HashSet(集合中的值唯一)
		HashSet<String> set = new HashSet<>();

		// 添加数据
		set.add("牛奶");
		set.add("面包");
		set.add("火腿");
		set.add("可乐");
		set.add("巧克力");
		set.add("可乐");

		// 获取set长度
		int a = set.size();
		System.out.println(a);

		// 移除元素
		set.remove("可乐");
		System.out.println(set.size());

		// 遍历set集合,用迭代器来获取数据
		Iterator<String> iterator = set.iterator();
		// hasNext()方法是用来下移“数据指针”,并判断是否还有数据
		while (iterator.hasNext()) {
			// next()是取当前“数据指针”上的数据
			System.out.println(iterator.next());
		}
		System.out.println("---------------------");

		// set增强for循环
		for (String tmp : set) {
			System.out.println(tmp);
		}
		// String[]增强for循环
		String[] arr = new String[] { "3", "4", "5", "7" };
		for (String ar : arr) {
			System.out.println(ar);
		}

		// ArrayList增强for循环
		ArrayList<Product> prdts = new ArrayList<Product>();
		prdts.add(new Product("001", "牛奶", 3.5f, 6));
		prdts.add(new Product("002", "牛", 3.5f, 2));
		prdts.add(new Product("003", "奶", 3.5f, 9));

		for (Product p : prdts) {
			System.out.println(p);
		}

	}
}
package cn.tjpu.javase06.HashMap;

import java.util.HashSet;

/**
 * 将字符串 "a,b,c,d,e,f,g,h,b,b,b,c,x,x,y,x,b"中的字母去重,打印: abcdefghxy
 */
public class HashSetTest {

	public static void main(String[] args) {

		String str = "a,b,c,d,e,f,g,h,b,b,b,c,x,x,y,x,b";
		// 字符串切割放入数组
		String[] s1 = str.split(",");

		HashSet<String> set = new HashSet<>();
		// 利用set添加相同值就会覆盖原有值的特性
		for (String ch : s1) {
			set.add(ch);
		}

		// 打印
		for (String ch : set) {
			System.out.print(ch);
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醪糟小丸子

小小帮助,不足挂齿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值