需求:
输入联系人:姓名 年龄 性别 地址 电话
通讯录管理类:
1、添加练习人信息
2、根据分组查找联系人 并针对姓名进行排序
例如 传入B分组 查找出 B分组下 姓名首字母是B的所有联系人3、根据电话输出联系人信息
4、根据性别查找该性别的所有联系人 并且按照年龄降序排序
5、根据姓名删除某个联系人
6、删除某个分区的所有联系人 传入B 把姓B的全删了7、修改联系人姓名
代码示例:
这里面需要使用获取汉字字符串的首字母,需要一个JAR包和类文件,需要的朋友可以私信我。
public class FunctionManager {
private TreeMap<String, ArrayList<LinkMan>> map = new TreeMap<>();
//给map集合添加联系人
public void addLinkMan(LinkMan linkman) {
//获取联系人姓名首字母
String s1 = Pinyin4jUtil.getFirstLetter(linkman.getName());
//进行判断,是否有这个key值
if( map.containsKey(s1)) {
ArrayList<LinkMan> arrayList = map.get(s1);
arrayList.add(linkman);
}else {
ArrayList<LinkMan> arrayList = new ArrayList<>();
arrayList.add(linkman);
map.put(s1 , arrayList);
}
}
//根据分组输出整个分组信息,按照姓名排序
public void printLinkMan(String s1) {
String s2 = s1.toUpperCase();
//判断是否存在这个字母
if(!map.containsKey(s2)) {
System.out.print("未找到您想要的联系人分组");
}else {
ArrayList<LinkMan> arrayList = map.get(s2);
TreeSet<LinkMan> treeSet = new TreeSet<>(new Comparator1());
treeSet.addAll(arrayList);
for( LinkMan linkMan : treeSet) {
System.out.print(s2+"分组:");
System.out.println(linkMan);
}
}
}
//根据性别查找所有联系人,并且按照年龄降序
//根据电话获取联系人信息
public void getLinkManByPhone(int phone) {
LinkMan linkman1 = null;
for( String s1 : map.keySet()) {
ArrayList<LinkMan> arrayList = map.get(s1);
for(LinkMan linkMan : arrayList) {
if( linkMan.getPhone() == phone) {
linkman1 = linkMan;
}
}
}
if( !(linkman1 == null)) {
System.out.print("电话为"+phone+"的联系人信息:");
System.out.println(linkman1);
}else {
System.out.println("未从此电话号码找到联系人");
}
}
//根据性别获取联系人,按照降序排列
public void getLinkManByGender(String gender) {
if(!(gender.equals("男")||gender.equals("女"))) {
System.out.println("请输入正确的性别");
return;
}
TreeSet<LinkMan> treeSet = new TreeSet<>(new Comparator2());
for( String s1 : map.keySet()) {
ArrayList<LinkMan> arrayList = map.get(s1);
for( LinkMan linkMan : arrayList) {
if(linkMan.getGender().equals(gender)) {
treeSet.add(linkMan);
}
}
}
if(treeSet.isEmpty()) {
System.out.println("集合中没有这个性别的人");
}
for(LinkMan linkMan : treeSet) {
System.out.println(linkMan);
}
}
//根据姓名删除联系人
public void removeLinkManByName(String name ) {
String s2 = Pinyin4jUtil.getFirstLetter(name);
if(!map.containsKey(s2)) {
System.out.println("集合中没有这个姓名的人");
return;
}
ArrayList<LinkMan> arrayList = map.get(s2);
Iterator<LinkMan> iterator = arrayList.iterator();
while(iterator.hasNext()) {
if(iterator.next().getName().equals(name)) {
iterator.remove();
}
}
if(arrayList.isEmpty()) {
map.remove(s2);
}
}
//根据传入的字母,删除某个分区
public void removeGroupByAfferent(String s1) {
String s2 = s1.toUpperCase();
if(map.containsKey(s2)) {
map.remove(s2);
}
else {
System.out.println("请输入正确的字母");
}
}
//修改练习人姓名
//先判断是否有这个首字母,其次判断是否有这个名字,如果有将linkman取出来,删除掉,修改值,重新调用添加LinkMan方法,还要判断删除LinkMan之后的分组是否为空,若为空就删除分组
public void reviseName(String name,String name1) {
String s1 = Pinyin4jUtil.getFirstLetter(name);
if( !map.containsKey(s1)) {
System.out.println("请输入正确的姓名");
return;
}
LinkMan linkMan1 = null;
ArrayList<LinkMan> arrayList = map.get(s1);
Iterator<LinkMan> iterator = arrayList.iterator();
while(iterator.hasNext()) {
LinkMan l1 =iterator.next();
if(l1.getName().equals(name)) {
linkMan1 = l1;
iterator.remove();
}
}
if(linkMan1 == null) {
System.out.println("集合中没有这个姓名的人");
}
if(arrayList.isEmpty()) {
map.remove(s1);
}
linkMan1.setName(name1);
addLinkMan(linkMan1);
}
//遍历整个map集合
public void printMap() {
for( String s1 : map.keySet()) {
ArrayList<LinkMan> a1 = map.get(s1);
System.out.print(s1+":");
for(LinkMan linkMan : a1 ) {
System.out.print(linkMan.toString()+" ");
}
System.out.println();
}
}
}