java使用集合实现通讯录功能
作者:chen449757520 发布时间:2023-01-30 21:27:15
标签:java,集合,通讯录
本文实例为大家分享了java使用集合实现通讯录的具体代码,供大家参考,具体内容如下
代码有些繁琐,只适合初学者。
项目1
java通讯录
方法(声明方法的类)
代码块
代码块语法遵循标准markdown代码,例如:
package com.lanou.homwork;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;
class ContactPerson {
public HashMap map = null;
public HashMap getMap() {
return map;
}
public void setMap(HashMap map) {
this.map = map;
}
public ContactPerson(HashMap map) {
super();
this.map = map;
}
public ContactPerson() {
}
// 添加联系人
public HashMap addContact(Person person) {
// map集合为空
if (this.map.size() == 0) {
LinkedList list = new LinkedList();
// 添加到list集合里
list.add(person);
this.map.put(person.getFirstCard(), list);// 添加map集合
System.out.println(person.getFirstCard());
} else {
System.out.println("1111111111111111111");
// 不为空的时候.首先判断有没有这个分组
Set keySet = this.map.keySet();// 得到所有的键key
// 遍历所有键
for (Object object : keySet) {
if (person.getFirstCard().equals(object)) {
Object object2 = this.map.get(person.getFirstCard());
LinkedList linkedList = (LinkedList) object2;
// 有这个分组
linkedList.add(person);
} else {
// 没有这个分组
LinkedList list3 = new LinkedList();
list3.add(person);
this.map.put(person.getFirstCard(), list3);
System.out.println(keySet);
System.out.println(map.values());
return map;
}
}
}
return map;
}
// 删除联系人
public void remove(Person person) {
// 首先找到那个分组
// 所有的值
Set set = this.map.keySet();
for (Object object : set) {
String nameString = person.getFirstCard();
if (nameString.equals(object)) {
// 找见分组
Collection collection = this.map.values();
for (Object object1 : collection) {// list数组
LinkedList list1 = (LinkedList) object1;// 强制转换
for (Object object2 : list1) {// 遍历
Person person2 = (Person) object2;//
if (person.getNameString().equals(
person2.getNameString())) {
if (list1.size() == 1) {
this.map.remove(person2.getFirstCard());// 删除整个分组
show();
} else {
list1.remove(person2);
show();
}
}
}
}
}
}
}
// 展示方法
public void show() {
System.out.println("*************************************");
System.out.println("请选择功能");
String[] newArrayStrings = { "1.添加联系人", "2.删除联系人", "3.修改联系人",
"4.展示所有联系人" };
for (int i = 0; i < newArrayStrings.length; i++) {
System.out.println("******" + newArrayStrings[i] + "******");
}
System.out.println("*************************************");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
switch (i) {
case 1: {
addPerosn();
}
break;
case 2: {
removePerson();
}
break;
case 3: {
upPerson();
}
break;
case 4: {
printResult(this.map);
}
break;
default:
break;
}
}
// 修改联系人信息
public void upPerson() {
Person person = new Person();
System.out.println("请输入要修改人的姓名:");
Scanner scanner = new Scanner(System.in);
String naString = scanner.next();
person.setNameString(naString);
shanChu(person);
}
// 输入新的人名,年龄
public void cc(Person person) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入新的名字:");
String naString2 = scanner.next();
System.out.println("请输入新的年龄:");
int age = scanner.nextInt();
System.out.println("请输入新的分组");
String group = scanner.next();
upPersonMessage(person, naString2, group, age);
}
// 判断有没有这个人
public void shanChu(Person person) {
if (this.map.isEmpty()) {
System.out.println("通讯录为空,修改失败");
System.out.println("是否添加联系人?(Yes/No)");
Scanner scanner = new Scanner(System.in);
String nameString = scanner.next();
if (nameString.equals("Yes")) {
addPerosn();
} else {
System.out.println(" * ,滚你妈");
}
}
Collection collection = this.map.values();
for (Object object : collection) {
LinkedList list = (LinkedList) object;
for (Object object2 : list) {
Person person2 = (Person) object2;
if (person.getNameString().equals(person2.getNameString())) {
System.out.println("恭喜你,通讯录有此人");
cc(person);
} else {
System.out.println("输入有误");
}
}
}
}
public Person addPerosn() {
Person p = new Person();
System.out.println("请输入添加人名字:");
Scanner scanner = new Scanner(System.in);
// 姓名
String name = scanner.next();
// 年龄
System.out.println("请输入年龄:");
int age = scanner.nextInt();
// 分组
System.out.println("请输入分组名称:");
String firstCardString = scanner.next();
p.setFirstCard(firstCardString);
p.setAge(age);
p.setNameString(name);
System.out.println(p);
addContact(p);
System.out.println("是否继续操作?y/n");
if (scanner.next().equals("y")) {
show();
} else {
System.out.println("***************欢迎您下次再来****************");
}
return p;
}
public Person removePerson() {
Person p = new Person();
System.out.println("请输入删除人名字:");
Scanner scanner = new Scanner(System.in);
// 姓名
String name = scanner.next();
// 年龄
System.out.println("请输入删除人的年龄:");
int age = scanner.nextInt();
// 分组
System.out.println("请输入删除的分组名称:");
String firstCardString = scanner.next();
p.setFirstCard(firstCardString);
p.setAge(age);
p.setNameString(name);
remove(p);
return p;
}
// 修改联系人
public HashMap upPersonMessage(Person person, String nameString,
String firstCard, int age) {
// 判断有没有此联系人
if (this.map.isEmpty()) {
System.out.println("通讯录为空");
} else {
String name = person.getFirstCard();
// 找联系人
Collection collection = this.map.values();// 得到所有的值
for (Object object : collection) {
LinkedList list = (LinkedList) object;
for (Object object2 : list) {
Person p = (Person) object2;
if (person.getNameString().equals(p.getNameString())) {
// 相等话,说明有这个人
System.out.println("有次联系人");
if (list.size() == 1) {
this.map.remove(p.getFirstCard());
Person person2 = new Person();
person2.setAge(age);
person2.setFirstCard(firstCard);
person2.setNameString(nameString);
LinkedList list2 = new LinkedList();
list2.add(person2);
this.map.put(person2.getFirstCard(), list2);
System.out.println(this.map);
} else {
Person person2 = new Person();
person2.setAge(age);
person2.setFirstCard(firstCard);
person2.setNameString(nameString);
list.add(person2);
System.out.println(this.map);
}
}
}
}
}
return map;
}
// 显示所有的联系人
public void printResult(HashMap map1) {
if (map1.isEmpty()) {
System.out.println("通讯录为空");
} else {
System.out.println(map1);
Scanner scanner = new Scanner(System.in);
System.out.println("是否继续y/n");
if (scanner.next().equals("y")) {
show();
} else {
System.out.println("***************欢迎您下次再来****************");
}
}
}
}
class Person {
private String nameString;
private String firstCard;
private int age;
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public String getFirstCard() {
return firstCard;
}
public void setFirstCard(String firstCard) {
this.firstCard = firstCard;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String nameString, String firstCard) {
this.nameString = nameString;
this.firstCard = firstCard;
}
public Person(String nameString, String firstCard, int age) {
this(nameString, firstCard);
this.age = age;
}
@Override
public String toString() {
return "姓名:" + this.getNameString() + "年龄:" + this.age + "分组:"
+ this.firstCard;
}
}
脚注
项目2
测试类
代码块
代码块语法遵循标准markdown代码,例如:
package com.lanou.homwork;
import java.util.HashMap;
public class TestPerson {
public static void main(String[] args) {
HashMap map = new HashMap();
ContactPerson contactperson = new ContactPerson(map);
contactperson.show();
}
}
感谢浏览。
来源:http://blog.csdn.net/chen449757520/article/details/77933261
0
投稿
猜你喜欢
- 何为原子性原子性:一条线程在执行一系列程序指令操作时,该线程不可中断。一旦出现中断,那么就可能会导致程序执行前后的结果不一致。与数据库中的原
- 简单工厂简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。定义了一个创建对象的类,由
- 了解过spring-Boot这个技术的,应该知道Spring-Boot的核心配置文件application.properties,当然也可以
- 前言Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中,一
- 最近有个需求,需要统计APP的在线人数,其实以前也统计过,采取的是上线发送一个请求$this->cache->incr()加1,
- 我想每个写项目的人,都肯定会遇到控制权限这个问题.例如这个这个链接只能管理员访问,那个链接丫只能超级管理员访问等等,实现方式也有多种多样,控
- 概念逃逸分析一种数据分析算法,基于此算法可以有效减少 Java 对象在堆内存中的分配。 Hotspot 虚拟机的编译器能够分析出一个新对象的
- Executor接口基于以下方法可以完成增,删,改查以及事务处理等操作。事实上,mybatis中的所有数据库操作是通过调用这些方法实现的。p
- springboot 多个filter的执行顺序以及配置当项目中有多个filter时,为了便于管理,可以创建一个配置文件,对所有的filte
- 一、背景spring-data-mongo 实现了基于 MongoDB 的 ORM-Mapping 能力,通过一些简单的注解、Query封装
- MyBatis 通过包含的jdbcType类型BIT FLOAT CHAR &nbs
- 解决方法有如下两种:第一种如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/
- Unity 跑马灯抽奖效果实现代码,供大家参考,具体内容如下这边用到插件是NGUI+Dotween,思路简单说下:先排版,通过移动图片蒙版来
- 在线程间通信方式中,我们了解到可以使用Semaphore信号量来实现线程间通信,Semaphore支持公平锁和非公平锁,Semaphore底
- springboot sqlSessionFactoryBean自定义1.新建一个配置类,加上configuration注解2.定制化Sql
- 一、目的本篇文章的目的是记录本人使用flutter加载与调用第三方aar包。二、背景本人go后端,业余时间喜欢玩玩flutter。一直有一个
- Java 使用IO流实现大文件的分割与合并文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一
- 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体
- 一、Kt调用-Java参数非null的处理@NotNullclass TestJava { public void
- /** * 进行BigDecimal对象的加减乘除,四舍五入等运算的工具类 * * @author Marydon * @createTi