这个系列是对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);
}
}
}
版权声明:本文为laozaoxiaowanzi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。