java使用集合實(shí)現(xiàn)通訊錄功能
本文實(shí)例為大家分享了java使用集合實(shí)現(xiàn)通訊錄的具體代碼,供大家參考,具體內(nèi)容如下
代碼有些繁瑣,只適合初學(xué)者。
項(xiàng)目1
java通訊錄
方法(聲明方法的類)
代碼塊
代碼塊語法遵循標(biāo)準(zhǔn)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() {
}
// 添加聯(lián)系人
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");
// 不為空的時(shí)候.首先判斷有沒有這個(gè)分組
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;
// 有這個(gè)分組
linkedList.add(person);
} else {
// 沒有這個(gè)分組
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;
}
// 刪除聯(lián)系人
public void remove(Person person) {
// 首先找到那個(gè)分組
// 所有的值
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數(shù)組
LinkedList list1 = (LinkedList) object1;// 強(qiáng)制轉(zhuǎn)換
for (Object object2 : list1) {// 遍歷
Person person2 = (Person) object2;//
if (person.getNameString().equals(
person2.getNameString())) {
if (list1.size() == 1) {
this.map.remove(person2.getFirstCard());// 刪除整個(gè)分組
show();
} else {
list1.remove(person2);
show();
}
}
}
}
}
}
}
// 展示方法
public void show() {
System.out.println("*************************************");
System.out.println("請選擇功能");
String[] newArrayStrings = { "1.添加聯(lián)系人", "2.刪除聯(lián)系人", "3.修改聯(lián)系人",
"4.展示所有聯(lián)系人" };
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;
}
}
// 修改聯(lián)系人信息
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);
}
// 判斷有沒有這個(gè)人
public void shanChu(Person person) {
if (this.map.isEmpty()) {
System.out.println("通訊錄為空,修改失敗");
System.out.println("是否添加聯(lián)系人?(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("是否繼續(xù)操作?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;
}
// 修改聯(lián)系人
public HashMap upPersonMessage(Person person, String nameString,
String firstCard, int age) {
// 判斷有沒有此聯(lián)系人
if (this.map.isEmpty()) {
System.out.println("通訊錄為空");
} else {
String name = person.getFirstCard();
// 找聯(lián)系人
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())) {
// 相等話,說明有這個(gè)人
System.out.println("有次聯(lián)系人");
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;
}
// 顯示所有的聯(lián)系人
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("是否繼續(xù)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;
}
}
腳注
項(xiàng)目2
測試類
代碼塊
代碼塊語法遵循標(biāo)準(zhǔn)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();
}
}
感謝瀏覽。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
Java對象級(jí)別與類級(jí)別的同步鎖synchronized語法示例
這篇文章主要為大家介紹了Java對象級(jí)別與類級(jí)別的同步鎖synchronized語法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
Spring與Struts整合之讓Spring管理控制器操作示例
這篇文章主要介紹了Spring與Struts整合之讓Spring管理控制器操作,結(jié)合實(shí)例形式詳細(xì)分析了Spring管理控制器相關(guān)配置、接口實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2020-01-01
SpringBoot請求處理之常用參數(shù)注解介紹與源碼分析
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時(shí)也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)請求處理、常用注解和方法參數(shù)的小技巧2022-10-10
詳解Java中static關(guān)鍵字和內(nèi)部類的使用
這篇文章主要為大家詳細(xì)介紹了Java中static關(guān)鍵字和內(nèi)部類的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08

