java基础学习-------容器(五)终结篇

容器总结

  1. Collection 表示一组对象,它是集中、收集的意思,就是把一些数据收集起来。

  2. Collection接口的两个子接口:

    1. List中的元素有顺序,可重复。常用的实现类有ArrayList、LinkedList和 vector。
     Ø ArrayList特点:查询效率高,增删效率低,线程不安全。
    
     Ø LinkedList特点:查询效率低,增删效率高,线程不安全。
    
     Ø vector特点:线程安全,效率低,其它特征类似于ArrayList。
    
    1. Set中的元素没有顺序,不可重复。常用的实现类有HashSet和TreeSet。
     Ø HashSet特点:采用哈希算法实现,查询效率和增删效率都比较高。
    
     Ø TreeSet特点:内部需要对存储的元素进行排序。因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。
    
  3. 实现Map接口的类用来存储键(key)-值(value) 对。Map 接口的实现类有HashMap和TreeMap等。Map类中存储的键-值对通过键来标识,所以键值不能重复。

  4. Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。

  5. 类 java.util.Collections 提供了对Set、List、Map操作的工具方法。

  6. 如下情况,可能需要我们重写equals/hashCode方法:

    1. 要将我们自定义的对象放入HashSet中处理。

    2. 要将我们自定义的对象作为HashMap的key处理。

    3. 放入Collection容器中的自定义对象后,可能会调用remove、contains等方法时。

  7. JDK1.5以后增加了泛型。泛型的好处:

    1. 向集合添加数据时保证数据安全。

    2. 遍历集合元素时不需要强制转换。

另外还有一些重要的知识点如下:
在这里插入图片描述
接下来把上面的表格中的数据用容器存储:

package com.gk.collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 *  测试表格数据的存储
 * ORM思想的简单实验:map表示一行数据,多行数据是多个map;最后将多个map放到list中
 * @author 康哥
 *
 */
public class TestStareData {
	public static void main(String[] args) {
		
		Map<String,Object> row1 = new HashMap<>();
		row1.put("id", 1001);
		row1.put("姓名", "张三");
		row1.put("薪水", 20000);
		row1.put("入职日期", "2019.8.8");
		
		Map<String,Object> row2 = new HashMap<>();
		row2.put("id", 1002);
		row2.put("姓名", "李四");
		row2.put("薪水", 50000);
		row2.put("入职日期", "2016.6.8");
		
		Map<String,Object> row3 = new HashMap<>();
		row3.put("id", 1003);
		row3.put("姓名", "李四");
		row3.put("薪水", 10000);
		row3.put("入职日期", "2020.3.8");
		
		//定义一个ArrayList,把前面的map都放进去
		List<Map<String,Object>> table = new ArrayList<>();
		table.add(row1);
		table.add(row2);
		table.add(row3);
		
		//遍历ArrayList,打印输出表格信息
		for(Map<String,Object> row : table) {
			Set<String> keySet = row.keySet();
			for(String key : keySet) {
				System.out.print(key + ":" + row.get(key) + "\t");
			}
			System.out.println();
		}
	}
}

运行结果:
在这里插入图片描述

package com.gk.collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 测试表格数据的存储,体会ORM思想
 * 每一行数据使用javabean存储,多行使用放到Map或List中
 * @author 康哥
 *
 */
public class TestStareDate02 {
	public static void main(String[] args) {
		User user1 = new User(1001, "张三", 20000, "2019.8.8");
		User user2 = new User(1002, "李四", 50000, "2016.6.8");
		User user3 = new User(1003, "王五", 10000, "2020.3.8");
		
		//使用List封装数据
		List<User> list = new ArrayList<>();
		list.add(user1);
		list.add(user2);
		list.add(user3);
		
		for( User user : list) {
			System.out.println(user);
		}
		
		//使用Map封装数据
		Map<Integer,User> map = new HashMap<>();
		map.put(1001, user1);
		map.put(1002, user2);
		map.put(1003, user3);
		
		Set<Integer> keySet = map.keySet();
		for(Integer key : keySet) {
			System.out.println(key + "--" + map.get(key));
		}
		
 	}
}

class User{
	private int id;
	private String name;
	private double salary;//工资
	private String hiredate;//入职日期
		
	
	public User() {
	}

	public User(int id, String name, double salary, String hiredate) {
		super();
		this.id = id;
		this.name = name;
		this.salary = salary;
		this.hiredate = hiredate;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}
	public String getHiredate() {
		return hiredate;
	}
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}
	
	@Override
	public String toString() {
		return "id:" + id + ",name:" + name + ",salary:" + salary + ",hiredate:" + hiredate;
	}
}

运行结果:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值