IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java常用工具类(四)——集合 -> 正文阅读

[Java知识库]Java常用工具类(四)——集合

一、集合概念和适用场景

  • Java中的集合是工具类,可以存储任意数量的具有共同属性的对象。
  • 集合适用于数据动态变换, 数组适用于固定大小数据
  • 无法预测存储数据的数量
  • 同时存储具有一对一关系的数据
  • 需要进行数据的增删
  • 数据重复问题

二、集合框架的体系结构

三、List 列表

  • List是元素有序并且可以重复的集合,称为序列
  • List可以精确的控制每个元素的插入位置,或删除某个元素的位置
  • List的两个主要实现类是ArrayList和LinkedList

ArrayList:

  • ArrayList底层是由数组实现的
  • 动态增长,以满足应用程序的需求
  • 在列表尾部插入或删除数据非常有效
  • 更适合查找和更新元素
  • ArrayList中的元素可以为空
  • 默认长度十

?

案例:添加字符串

package com.csdn.set;

import java.util.ArrayList;
import java.util.List;

public class ListDemo1 {

	public static void main(String[] args) {
		// 用ArrayList存储编程语言的名称,并输出
		List list = new ArrayList();
		list.add("Java");
		list.add("C");
		list.add("C++");
		list.add("Go");
		list.add("Java");
		list.add("swift");
		//输出列表中元素的个数
		System.out.println("列表中元素的个数为: " + list.size());
		
		//遍历输出所有的编程语言
		System.out.println("********************************");
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + ",");
		}
		
		//移除列表中的C++
		list.remove(2); //list.remove("C++");
		
		//遍历输出所有的编程语言
		System.out.println("********************************");
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + ",");
		}
	}
}

案例:添加对象

Notice.java

package com.csdn.set;

import java.util.Date;

public class Notice {
	private int id;
	private String title;
	private String creator;
	private Date createTime;
	
	public Notice() {
		
	}
	
	public Notice(int id, String title, String creator, Date createTime) {
		super();
		this.id = id;
		this.title = title;
		this.creator = creator;
		this.createTime = createTime;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getCreator() {
		return creator;
	}

	public void setCreator(String creator) {
		this.creator = creator;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}	
}

NoticeTest.java

package com.csdn.set;

import java.util.ArrayList;
import java.util.Date;

public class NoticeTest {

	public static void main(String[] args) {
		// 创建对象
		Notice notice1 = new Notice(1, "欢迎来到csdn", "管理员", new Date());
		Notice notice2 = new Notice(2, "请同学们按时完成作业", "老师", new Date());
		Notice notice3 = new Notice(3, "考勤通知", "老师", new Date());
		
		// 添加公告
		ArrayList noticeList = new ArrayList();
		noticeList.add(notice1);
		noticeList.add(notice2);
		noticeList.add(notice3);
		
		// 显示公告
		System.out.println("公告的内容为: ");
		for (int i = 0; i < noticeList.size(); i++) {
			System.out.println(i + 1 + ":" + ((Notice)(noticeList.get(i))).getTitle());
		}
	}
}

四、Set 集合

  • Set是元素无序并且不可以重复的集合,别称为集。
  • Set是接口,不能创建对象

HashSet

  • HashSet是Set的一个重要实现类, 称为哈希集
  • HashSet中的元素无序并且不可以重复
  • HashSet中只允许一个null元素
  • 具有良好的存取和查找性能
  • HashSet删除元素的时候通过遍历的方式只能删除一个后break, 如果需要删除多个需要创建一个新的集合,将满足条件的数据添加到新的集合中,然后通过removeAll删除满足条件的集合

Iterator(迭代器)

  • Iterator接口可以以统一的方式对各种集合元素进行遍历
  • hasNext()方法检测集合中是否还有下一个元素
  • next()方法返回集合的下一个元素

案例(字符串):将英文单词添加到HashSet中

package com.csdn.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class WordDemo {

	public static void main(String[] args) {
		// 将英文单词添加到HashSet中
		Set set = new HashSet();
		set.add("blue");
		set.add("red");
		set.add("white");
		set.add("black");
		set.add("green");
		
		System.out.println("set中的元素为: ");
		Iterator it = set.iterator();
		while(it.hasNext()) {
			System.out.print(it.next() + " ");
		}
		System.out.println();
		System.out.println("**************************");
		// 添加重复元素, 不报错不显示
		set.add("red");
		it = set.iterator();
		
		while(it.hasNext()) {
			System.out.print(it.next() + " ");
		}	
	}
}

案例(对象):创建宠物猫

Cat.java

package com.csdn.set;

public class Cat {
	private String name;
	private int month;
	private String species;
	
	// 构造方法
	public Cat() {
		
	}

	public Cat(String name, int month, String species) {
		super();
		this.name = name;
		this.month = month;
		this.species = species;
	}

	// setter/getter方法
	public String getName() {
		return name;
	}

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

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public String getSpecies() {
		return species;
	}

	public void setSpecies(String species) {
		this.species = species;
	}

	@Override
	public String toString() {
		return "Cat [姓名=" + name + ", 年龄=" + month + ", 品种=" + species + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + month;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((species == null) ? 0 : species.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj.getClass() == Cat.class) {
			Cat cat = (Cat) obj;
			return cat.getName().equals(name) && (cat.getMonth() == month) && cat.getSpecies().equals(species);
		}
		return false;
	}	
}

创建测试 CatTest.java

package com.csdn.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest {

	public static void main(String[] args) {
		// 定义宠物猫对象
		Cat huahua = new Cat("花花", 1, "英短");
		Cat fanfan = new Cat("凡凡", 10, "美短");
		// 将宠物猫对象放入HashSet中
		Set set = new HashSet();
		set.add(huahua);
		set.add(fanfan);
		// 显示宠物猫信息
		Iterator it = set.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		System.out.println("*********************");
		// 添加重复宠物信息
		Cat huahua01 = new Cat("花花", 1, "英短");
		set.add(huahua01);
		it = set.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

五、Map 集合

  • Map中的数据是以键值对(key-value)的形式存储的
  • key-value以Entry类型的对象实例存在
  • 可以通过key值快速地查找value
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值

HashMap

  • 基于哈希表的Map接口实现
  • 允许使用null值和null键
  • key值不允许重复
  • HashMap重的Entry对象是无序排列的

案例:String对象

package com.csdn.set;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class DictionaryDemo {

	public static void main(String[] args) {
		Map<String, String> animal = new HashMap<String, String>();
		System.out.println("请输入三组单词对应的注释, 并存放到HashMap中");
		Scanner console = new Scanner(System.in);
		// 添加数据
		int i = 0;
		while(i < 3) {
			System.out.print("请输入key值(单词): ");
			String key = console.next();
			System.out.print("请输入value值(注释): ");
			String value = console.next();
			animal.put(key, value);
			i++;
		}
		// 打印输出value的值(直接使用迭代器)
		System.out.println("******************************");
		System.out.println("使用迭代器输入所有的value: ");
		Iterator<String> it = animal.values().iterator();
		while(it.hasNext()) {
			System.out.print(it.next() + " ");
		}
		System.out.println("******************************");
		// 打印输出key和value的值
		// 通过entrySet方法
		System.out.println("通过entrySet方法得到key-value: ");
		Set<Entry<String, String>> entrySet = animal.entrySet();
		for (Entry<String, String> entry: entrySet) {
			System.out.print(entry.getKey() + "-");
			System.out.println(entry.getValue());
		}
		
		System.out.println("******************************");
		// 通过单词找到注释并输出
		// 使用keySet方法
		System.out.print("请输入要查找的单词:");
		String strSearch = console.next();
		// 1、取得keySet
		Set<String> keySet = animal.keySet();
		// 2、遍历keySet
		for(String key:keySet) {
			if(strSearch.equals(key)) {
				System.out.println("找到了! 键值对为:" + key + "-" + animal.get(key));
				break;
			}
		}	
	}
}

?坐得住板凳,耐得住寂寞,守得住初心!??

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:11:57  更:2021-08-05 17:14:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 15:22:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码