javaSE-day06--HashMap基本用法、HashSet基本用法、iterator迭代器、增强for循环

HashMap基本用法

package day06;

import java.util.HashMap;

public class HashMapDemo {
	public static void main(String[] args) {
		HashMap<String,String> map1 = new HashMap<>();
		
		//向HashMap中添加数据  
		//如果添加的key相同则会被覆盖
		map1.put("1","长沙" );
		map1.put("1","北京" );
		map1.put("2","天津");
		map1.put("3","上海");
		map1.put("4","广州");
		map1.put("5","深圳");
		map1.put("6","岳阳");
		
		//从HashMap中取出数据
		String a = map1.get("1");
		System.out.println(a);
		
		//从HashMap中删除数据,可以 用字符串变量来接受删除的内容
		String aa = map1.remove("2");
		System.out.println(aa);
		
		//获取HashMap的长度
		int size = map1.size();
		System.out.println(size);
		
		//判断数据是否在HashMap中 
		//使用HashMap的contains功能判断指定的key是否存在
		boolean c = map1.containsKey("2");
		System.out.println(c);
		
		// HashMap的遍历
		Set<String> keySet = map1.keySet();
		for (String a1 : keySet) {
			System.out.println(a1);
		}
	}
}

总结:

  • HashMap在生成对象时需要声明key和数据的数据类型,例如<Integer,String>。在添加数据的时候同样需要输入key和数据。
  • 优点:使用HashMap只需要有key就可以取到需要的值。
  • HashSet中有一个方法keyset,返回map中的key。存储到Set集合对象中:keySet,再通过增强for循环来遍历。

HashSet基本用法

package day06;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
/*
 * HashSet也是一种集合数据类型
 * 可以放入多个值
 */
public class HashSetDemo {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<>();
		//向HashSet中添加数据
		set.add("北京");
		set.add("上海");
		set.add("广州");
		set.add("天津");
		set.add("深圳");
		
		//获取HashSet的长度
		int a = set.size();
		System.out.println("HashSet长度:"+a);
		
		//删除HashSet中的数据,返回一个boolean值
		System.out.println("是否删除:"+set.remove("北京"));
		//遍历HashSet
		Iterator<String> iterator = set.iterator();
		//iterator.hashNext();判断set中是否还有数据,返回一个boolean数据类型。
		//iterator.next();读取值,并将索引向下移动一位。
		System.out.println("遍历HashSet:");
		while(iterator.hasNext()) {
			String xx = iterator.next();
			System.out.println(xx);
		}
		
		//增强for循环--将迭代器 封装为增强for循环
		System.out.println("增强for循环遍历HashSet:");
		for(String temp:set) {
			System.out.println(temp);
		}
		
		System.out.println("增强for循环可以遍历数组:");
		int[] aa = new int[] {8,9,10,11};
		for(int ab:aa) {
			System.out.println(ab);
		}
		
		System.out.println("增强for循环可以遍历ArrayList:");
		ArrayList<Integer> a1 = new ArrayList<Integer>();
		a1.add(100);
		a1.add(200);
		a1.add(300);
		for(int ab:a1) {
			System.out.println(ab);
		}
		
	}
}

总结:
在这里插入图片描述

  • HashSet也是一种集合数据类型。它就像一个黑盒在里边存储没有顺序。
  • 遍历没有顺序的集合,需要用到iterator迭代器。iterator.hashNext();判断set中是否还有数据,返回一个boolean数据类型。iterator.next();读取值,并将索引向下移动一位。
  • 增强for循环将迭代器封装,使遍历更加便捷。同样可以应用于数组和ArrayList的遍历。
    for(返回类型 名字:遍历的集合)

练习

几种集合数据类型的使用

练习要求:
1、定义一个User类,包含属性: id,name,password,phone,age,薪水 要求:所有属性为private

2、写一个程序,用题1的User类,构造4个user对象

3、将题2中的4个user对象存入一个数组,然后再存入一个Arraylist,再存入一个HashSet,再存入一个HashMap

4、将题3中的list 、 set、 map 分别遍历打印所有user数据

5、分别从题3的list中找出年龄最大的user对象,从set中找出薪水最高的user对象,从map中找出age最小的user对象

6、定义一个Product类,包含以下属性 pId pName price num

写一个程序,造数据: 造5个商品对象,id分别为 “1”,“2”,“3”,“4”,“5” 然后造3个用户对象, 然后模拟生成购物车

张三,产品1:2个,产品3:4个,产品5:1 李四,产品2:3个,产品4:1个,产品3:1

然后写一个工具方法,传入一个购物车,和一个用户的名字,就能返回这个用户的购物车中的商品列表

package day06;

public class User {
	private String Id;
	private String name;
	private String password;
	private String phone;
	private int age;
	private double salary;

	public User() {

	}

	public User(String id, String name, String password, String phone, int age, double salary) {
		Id = id;
		this.name = name;
		this.password = password;
		this.phone = phone;
		this.age = age;
		this.salary = salary;
	}

	public String getId() {
		return Id;
	}

	public void setId(String id) {
		Id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	public String toString() {
		return Id+","+name+","+password+","+phone+","+age+","+salary;
	}
}





package day06;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class UserTest {
	public static void main(String[] args) {
		User user1 = new User("01", "张三", "123456", "110", 18, 1800);
		User user2 = new User("02", "李四", "124789", "119", 20, 1900);
		User user3 = new User("03", "赵五", "777777", "120", 22, 2000);
		User user4 = new User("04", "王六", "444444", "911", 23, 1600);
		// 放入数组
		User[] user = new User[] { user1, user2, user3, user4 };
		// 放入list
		ArrayList<User> arrayList = new ArrayList<>();
		arrayList.add(user1);
		arrayList.add(user2);
		arrayList.add(user3);
		arrayList.add(user4);
		// 放入HashSet
		HashSet<User> hashSet = new HashSet<>();
		hashSet.add(user1);
		hashSet.add(user2);
		hashSet.add(user3);
		hashSet.add(user4);
		// 放入HashMap
		HashMap<String, User> hashMap = new HashMap<>();
		hashMap.put(user1.getId(), user1);
		hashMap.put(user2.getId(), user2);
		hashMap.put(user3.getId(), user3);
		hashMap.put(user4.getId(), user4);

		// 遍历数组
		for (User a : user) {
			System.out.println(a);
		}
		System.out.println("------------");

		// 遍历ArrayList
		for (User a : arrayList) {
			System.out.println(a);
		}
		System.out.println("----------------");
		// 遍历HashSet
		for (User a : hashSet) {
			System.out.println(a);
		}
		System.out.println("-----------------");

		// 遍历HashMap
		Set<String> keySet = hashMap.keySet();
		for (String a : keySet) {
			User u = hashMap.get(a);
			System.out.println(u);
		}
		System.out.println("-------------");
		// 另一种遍历HashMap
		Set<Entry<String, User>> entrySet = hashMap.entrySet();
		for (Entry<String, User> a : entrySet) {
			System.out.println(a.getKey() + "," + a.getValue());

		}
		System.out.println("------------");
		// 从list中找出年龄最大的user对象
		User a = arrayList.get(0);
		for (int i = 0; i < arrayList.size(); i++) {
			if (arrayList.get(i).getAge() > a.getAge()) {
				a = arrayList.get(i);
			}
		}
		System.out.println("list中年龄最大的对象:" + a);
		System.out.println("------------------");
		//从set中找出薪水最高的user对象
		Iterator<User> iterator = hashSet.iterator();//使用迭代器工具
		User uset = iterator.next();//取出一个对象作为基准对象,来比较
		for(User aa:hashSet) {
			if(aa.getSalary()>uset.getSalary()) {
				uset=aa;
			}
		}
		System.out.println("set中薪水最高的对象:"+uset);
		System.out.println("------------------");
		//从map中找出age最小的user对象
		Set<String> keySet2 = hashMap.keySet();//将map的key放入set
		Iterator<String> iterator2 = keySet2.iterator();//使用迭代器工具
		String onemapkey = iterator2.next();//set再利用迭代器取出一个key
		User onemap =hashMap.get(onemapkey);//通过取出的key,生成一个基准对象来比较
		for(String mapkey:keySet2) {
			if(hashMap.get(mapkey).getAge()<hashMap.get(onemapkey).getAge()){
				onemap = hashMap.get(mapkey);
			}
		}
		System.out.println("map中年龄最小的对象:"+onemap);
	}
}

第6点

package day06;

public class Product {
	private String pId;
	private String pName;
	private float price;
	private int num;
	
	
	public Product() {

	}

	public Product(String pId, String pName, float price, int num) {
		this.pId = pId;
		this.pName = pName;
		this.price = price;
		this.num = num;
	}
	
	public String getpId() {
		return pId;
	}
	public void setpId(String pId) {
		this.pId = pId;
	}
	public String getpName() {
		return pName;
	}
	public void setpName(String pName) {
		this.pName = pName;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}

	@Override
	public String toString() {
		return "Product [pId=" + pId + ", pName=" + pName + ", price=" + price + ", num=" + num + "]";
	}
	
	
}




package day06;

import java.util.ArrayList;
import java.util.HashMap;

public class ProductTet {
	public static void main(String[] args) {
		Product p1 = new Product("01","咖啡1",55,2);
		Product p2 = new Product("02","咖啡2",65,1);
		Product p3 = new Product("03","咖啡3",75,4);
		Product p4 = new Product("04","咖啡4",85,1);
		Product p5 = new Product("05","咖啡5",85,1);
		
		User u1 = new User("1", "张三1", "123456", "110", 18, 1800);
		User u2 = new User("2", "张三2", "123456", "110", 28, 2800);
		User u3 = new User("3", "张三2", "123456", "110", 38, 3800);
	    
		//根据人名来查找,加入购物车的商品
		//使用HashMap,以人名做key,将产品存储到list作为value;
		HashMap<String, ArrayList<Product>> carMap = new HashMap<>();
		Product p11 = new Product("01","咖啡1",55,2);
		Product p31 = new Product("03","咖啡3",75,4);
		Product p51 = new Product("05","咖啡5",85,1);
		
		//向list中添加商品
		ArrayList<Product> zs1_List = new ArrayList<>();
		zs1_List.add(p11);
		zs1_List.add(p31);
		zs1_List.add(p51);	
		//向hashmap中存储内容
		carMap.put(u1.getName(), zs1_List);
		
		//第二个例子
		Product p22 = new Product("02","咖啡2",65,1);
		Product p32 = new Product("03","咖啡3",75,2);
		Product p42 = new Product("04","咖啡4",85,1);
		
		ArrayList<Product> zs2_List = new ArrayList<>();
		zs2_List.add(p22);
		zs2_List.add(p32);
		zs2_List.add(p42);
		
		carMap.put(u2.getName(), zs2_List);
		
		//测试工具方法,找任务的产品列表
		ArrayList<Product> pdts= ProductTet.findpddbyName(carMap, "张三1");
		System.out.println(pdts);
	}
	
	//工具类,输入人名,返回商品list,list内有商品对象。
	public static ArrayList<Product> findpddbyName(HashMap<String, ArrayList<Product>> carMap,String userName){
		ArrayList<Product> list= carMap.get(userName);
		
		return list;
	}
		
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值