java使用集合實(shí)現(xiàn)通訊錄功能
本文實(shí)例為大家分享了java使用集合實(shí)現(xiàn)通訊錄的具體代碼,供大家參考,具體內(nèi)容如下
代碼有些繁瑣,只適合初學(xué)者。
項(xiàng)目1
java通訊錄
方法(聲明方法的類(lèi))
代碼塊
代碼塊語(yǔ)法遵循標(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í)候.首先判斷有沒(méi)有這個(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 { // 沒(méi)有這個(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)) { // 找見(jiàn)分組 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("請(qǐng)選擇功能"); 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("請(qǐng)輸入要修改人的姓名:"); 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("請(qǐng)輸入新的名字:"); String naString2 = scanner.next(); System.out.println("請(qǐng)輸入新的年齡:"); int age = scanner.nextInt(); System.out.println("請(qǐng)輸入新的分組"); String group = scanner.next(); upPersonMessage(person, naString2, group, age); } // 判斷有沒(méi)有這個(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("請(qǐng)輸入添加人名字:"); Scanner scanner = new Scanner(System.in); // 姓名 String name = scanner.next(); // 年齡 System.out.println("請(qǐng)輸入年齡:"); int age = scanner.nextInt(); // 分組 System.out.println("請(qǐng)輸入分組名稱(chēng):"); 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("***************歡迎您下次再來(lái)****************"); } return p; } public Person removePerson() { Person p = new Person(); System.out.println("請(qǐng)輸入刪除人名字:"); Scanner scanner = new Scanner(System.in); // 姓名 String name = scanner.next(); // 年齡 System.out.println("請(qǐng)輸入刪除人的年齡:"); int age = scanner.nextInt(); // 分組 System.out.println("請(qǐng)輸入刪除的分組名稱(chēng):"); 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) { // 判斷有沒(méi)有此聯(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())) { // 相等話,說(shuō)明有這個(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("***************歡迎您下次再來(lái)****************"); } } } } 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
測(cè)試類(lèi)
代碼塊
代碼塊語(yǔ)法遵循標(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(); } }
感謝瀏覽。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot常見(jiàn)get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見(jiàn)get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03Java對(duì)象級(jí)別與類(lèi)級(jí)別的同步鎖synchronized語(yǔ)法示例
這篇文章主要為大家介紹了Java對(duì)象級(jí)別與類(lèi)級(jí)別的同步鎖synchronized語(yǔ)法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Java元組類(lèi)型javatuples使用實(shí)例
這篇文章主要介紹了Java元組類(lèi)型javatuples使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Spring與Struts整合之讓Spring管理控制器操作示例
這篇文章主要介紹了Spring與Struts整合之讓Spring管理控制器操作,結(jié)合實(shí)例形式詳細(xì)分析了Spring管理控制器相關(guān)配置、接口實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2020-01-01SpringBoot請(qǐng)求處理之常用參數(shù)注解介紹與源碼分析
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)請(qǐng)求處理、常用注解和方法參數(shù)的小技巧2022-10-10詳解Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用
這篇文章主要為大家詳細(xì)介紹了Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08