集合区别

  HashMap 和 HashTable 的区别HashMap可以保存null值HashTable 不可以保存null值HashMap 是线程不安全的HashTable 是线程安全的(效率低)ArrayList数组实现 线程不安全的 常用查询快 增删慢LinkedList链表实现 线程不安全 不常用查询慢 增删快Vector数组实现 线程安全的 被ArrayList替代了HashSet哈希算法 线程不安全的 作用:去重LinkedHashSet线程不安全 有序(怎么存的怎么取出来)TreeSet线程不安全的 作用:排序(两种方法)HashMap线程不安全的 作用:键位可以去去重LinkedHashMap线程不安全的 特点:有序(怎么存的怎么取)TreeMap线程不安全的 作用:键位可以排序HashTable线程安全的 被HashMap取代 不能保存null值

我的代码

//创建联系人类 和 通讯录管理类 使用map和list实现
//联系人:姓名 年龄 性别 地址 电话
//通讯录管理类:
//1.根据分组查找联系人 并针对姓名进行排序
//例如 传入B分组 查找出 B分组下 姓名首字母是B的所有联系人
//2.根据电话输出联系人信息
//3.根据性别查找该性别的所有联系人 并且按照年龄降序排序
//4.根据姓名删除某个联系人
//5.删除某个分区的所有联系人 传入B 把姓B的全删了
//6.修改联系人姓名
//7.添加联系人(不上来创建26个键值对)说明:得到字符串中的大写首字母时,需要导入两个jar包,分别是pinyin4j-2.5.0.jar    PinYinUtil.jar
用BuildPath建立一下路径后才能使用String firstLetter =  Pinyin4jUtil.getFirstLetter(oldName)方法
package com.lanou3g.bean;import java.util.ArrayList;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;public class LinkManManager {private static TreeMap<String, ArrayList<LinkMan>> treeMap = null; private static String name;public LinkManManager() {super();// TODO Auto-generated constructor stubtreeMap = new TreeMap<>();}public LinkManManager(String name) {this.name = name;treeMap = new TreeMap<>();}public String getName() {return name;}   public static void setName(String name) {LinkManManager.name = name;}public static TreeMap<String, ArrayList<LinkMan>> getTreeMap() {return treeMap;}// 打印treeMap集合public  void  printTreeMap() {if(treeMap.isEmpty()){System.out.println(name + "为空通讯录中无联系人");return;}for(String key : treeMap.keySet()) {ArrayList< LinkMan> treeMapList = treeMap.get(key);System.out.println(key + "组:");for(LinkMan linkMan : treeMapList) {System.out.println(linkMan);}}}// 往集合treeMap中添加联系人public void addLinkManToTreeMap(LinkMan linkMan) {if(linkMan == null || linkMan.getName().isEmpty()) {System.out.println("联系人信息不全 -- 添加联系人失败");}String firstLetter = Pinyin4jUtil.getFirstLetter(linkMan.getName());String upperCase = firstLetter.toUpperCase();if(!treeMap.containsKey(upperCase)) {ArrayList<LinkMan> array = new ArrayList<>();array.add(linkMan);treeMap.put(upperCase, array);}else {ArrayList<LinkMan> arrays = treeMap.get(firstLetter);if(!arrays.contains(linkMan)) {arrays.add(linkMan);}}}//根据分组查找联系人 并针对姓名进行排序 public void searchLinkManByStrAndSortByName(String string){if(string == null) {System.out.println("分区输入有误 -- 请重新输入");return;}String upperCase = string.toUpperCase();if(!treeMap.containsKey(upperCase)) {System.out.println("无该分区 -- 分区内无联系人");return;}ArrayList<LinkMan> arrayList = treeMap.get(upperCase);TreeSet<LinkMan> treeSet = new TreeSet<>(new sortByName());treeSet.addAll(arrayList);arrayList.clear();arrayList.addAll(treeSet);printArrayList(arrayList);}// 打印arrayList方法public void printArrayList(ArrayList<LinkMan> arrayList) {for (LinkMan linkMan : arrayList) {System.out.println(linkMan);}}// 根据电话输出联系人信息public void printByPhone(String phone) {if(phone == null) {System.out.println("输入电话号码为空");return;}LinkMan linkMan = null;for (String string : treeMap.keySet()) {ArrayList<LinkMan> arrayList = treeMap.get(string);for (LinkMan linkMan1 : arrayList) {if(linkMan1.getNumber().equals(phone)) {linkMan = linkMan1;}}}if(linkMan == null) {System.out.println(phone + " -- 查询失败");return;}System.out.println(linkMan);}// 根据性别查找该性别的所有联系人 并且按照年龄降序排序public void searchBySexAndSortByAge(String sex) {if(!(sex.equals("男") || sex.equals("女"))) {System.out.println("性别有误 -- 无法查询");return;}ArrayList<LinkMan> arrayList = new ArrayList<>();for(String string : treeMap.keySet()) {ArrayList<LinkMan> arrayList2 = treeMap.get(string);for (LinkMan linkMan : arrayList2) {if(linkMan.getSex().equals(sex)) {arrayList.add(linkMan);}}}if(arrayList.isEmpty()) {System.out.println("无" + sex + "性别的人");return;}TreeSet< LinkMan> treeSet = new TreeSet<>(new sortByAge());treeSet.addAll(arrayList);arrayList.clear();arrayList.addAll(treeSet);printArrayList(arrayList);}// 删除某个分区的所有联系人 传入B 把姓B的全删了public void removeByGroup(String group) {String upperCase = group.toUpperCase();if(!treeMap.containsKey(upperCase)) {System.out.println("无此分区");return;}treeMap.remove(upperCase);printTreeMap();}// 根据姓名删除某个联系人public void deleteLinkManByName(String name) {String firstLetter = Pinyin4jUtil.getFirstLetter(name);if(name == "" || !treeMap.containsKey(firstLetter)) {System.out.println("姓名不能为空或姓名有误");return;}ArrayList<LinkMan> arrayList = null;LinkMan linkMan = null;for (String string : treeMap.keySet()) {ArrayList<LinkMan> arrayList2 = treeMap.get(string);for (LinkMan linkMan2 : arrayList2) {if(linkMan2.getName().equals(name)) {linkMan = linkMan2;arrayList = arrayList2;}}}if(linkMan == null) {System.out.println("此姓名不存在");return;}arrayList.remove(linkMan);if(arrayList.isEmpty()) {removeByGroup(firstLetter);}}// 修改联系人姓名/*1.有老名字的分区*      a.有这个老名字进行 修改*          1.改名没改首字母(找到这人 调用set方法 直接修改姓名)*          2.改名改首字母*                  1)把利用老人创建一个新人出来*                  2)把老人删了*                  3)直接调用添加方法把新人添加进去*      b.没这个老名字* 2.没有老名字的分区(提示 查无此人 不能修改)*/public void changeLinkManByOldNameAndNewName(String oldName, String newName) {String firstLetter = Pinyin4jUtil.getFirstLetter(oldName);String firstLetter2 = Pinyin4jUtil.getFirstLetter(newName);String oldCase = firstLetter.toUpperCase();String newCase = firstLetter2.toUpperCase();if(!treeMap.containsKey(oldCase)) {System.out.println("该分区不存在 查无此人 无法修改");return;}LinkMan oldman = null;for (String string : treeMap.keySet()) {ArrayList<LinkMan> arrayList = treeMap.get(string);for (LinkMan linkMan1 : arrayList) {if(linkMan1.getName().equals(oldName)) {oldman = linkMan1;}}}if(oldman == null) {System.out.println("在" + oldCase + "分区内 查无此人");return;}if(oldCase.equals(newCase)) {oldman.setName(newName);}else {LinkMan linkMan = oldman;deleteLinkManByName(oldName);linkMan.setName(newName);addLinkManToTreeMap(linkMan);}}
}
class sortByName implements Comparator<LinkMan>{@Overridepublic int compare(LinkMan o1, LinkMan o2) {// TODO Auto-generated method stubint num = o1.getName().compareTo(o2.getName());return num == 0 ? 1 : num;}}class sortByAge implements Comparator<LinkMan>{@Overridepublic int compare(LinkMan o1, LinkMan o2) {// TODO Auto-generated method stubint num = o2.getAge() - o1.getAge();return num == 0 ? 1 : num;}}
package com.lanou3g.bean;public class LinkMan {//姓名 年龄 性别 地址 电话private String name;private int age;private String sex;private String address;private String number;public LinkMan() {super();// TODO Auto-generated constructor stub}public LinkMan(String name, int age, String sex, String address, String number) {super();this.name = name;this.age = age;this.sex = sex;this.address = address;this.number = number;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((address == null) ? 0 : address.hashCode());result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result + ((number == null) ? 0 : number.hashCode());result = prime * result + ((sex == null) ? 0 : sex.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;LinkMan other = (LinkMan) obj;if (address == null) {if (other.address != null)return false;} else if (!address.equals(other.address))return false;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (number == null) {if (other.number != null)return false;} else if (!number.equals(other.number))return false;if (sex == null) {if (other.sex != null)return false;} else if (!sex.equals(other.sex))return false;return true;}@Overridepublic String toString() {return "[name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + ", number=" + number+ "]";}}
package com.lanou3g.bean;import java.util.ArrayList;
import java.util.TreeMap;public class Test {public static void main(String[] args) {LinkManManager manager = new LinkManManager("中华通讯录");//manager.printTreeMap();manager.addLinkManToTreeMap(new LinkMan("盖伦", 20, "男", "德玛西亚", "14532"));manager.addLinkManToTreeMap(new LinkMan("剑姬", 12, "女", "圣光之城", "2453"));manager.addLinkManToTreeMap(new LinkMan("剑圣", 18, "男", "圣光之城", "2453"));manager.addLinkManToTreeMap(new LinkMan("剑魔", 15, "男", "迷失之城", "2453"));manager.addLinkManToTreeMap(new LinkMan("赵信", 19, "男", "迷失之城", "5741"));manager.addLinkManToTreeMap(new LinkMan("蛮王", 17, "女", "德玛西亚", "8553"));//manager.addLinkManToTreeMap(new LinkMan("无极", 17, "女", "德玛西亚", "8553"));manager.printTreeMap();System.out.println("*************");//manager.searchLinkManByStrAndSortByName("j");//manager.printByPhone("5741");//manager.searchBySexAndSortByAge("男");//manager.removeByGroup("j");//manager.deleteLinkManByName("蛮王");//System.out.println("*************");//manager.deleteLinkManByName("赵信");manager.changeLinkManByOldNameAndNewName("蛮王", "无极");System.out.println("++++");manager.printTreeMap();}
}

老师的代码

//创建联系人类 和 通讯录管理类 使用map和list实现
//联系人:姓名 年龄 性别 地址 电话
//通讯录管理类:
//1.根据分组查找联系人 并针对姓名进行排序
//例如 传入B分组 查找出 B分组下 姓名首字母是B的所有联系人
//2.根据电话输出联系人信息
//3.根据性别查找该性别的所有联系人 并且按照年龄降序排序
//4.根据姓名删除某个联系人
//5.删除某个分区的所有联系人 传入B 把姓B的全删了
//6.修改联系人姓名
//7.添加联系人(不上来创建26个键值对)
package com.lanou3g;import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;import com.lanou3g.bean.Pinyin4jUtil;public class LinkManManager {// 声明一个TreeMap保存整个通讯录private TreeMap<String, ArrayList<LinkMan>> map;public LinkManManager() {super();    map = new TreeMap<>();}// 现在我不希望外界修改通讯录 不提供set方法public TreeMap<String, ArrayList<LinkMan>> getMap() {return map;}// 遍历map的方法public void printMap() {System.out.println("*****************");for(String key : map.keySet()) {// 通过key找对应的value value是个数组ArrayList<LinkMan> list = map.get(key);// 打印分组System.out.println(key + "分组:");//  遍历每一个listfor(LinkMan linkMan : list) {System.out.println(linkMan);}}System.out.println("*****************");}// 添加联系人/** 分区存在* 分区不存在* 直接利用分区名字(key) 取出对应数组* 把联系人存进去* * 分区不存在* 创建个数组 把人放进去* 把人和对应分区 放进map中*/public void addLinkMan(LinkMan linkMan){// 防御式判断if(linkMan == null || linkMan.getName().isEmpty()) {// 直接结束方法return;}// 把名字首字母取出来String firstLetter = Pinyin4jUtil.getFirstLetter(linkMan.getName());// 判断这个key是否存在map中if(!map.containsKey(firstLetter)) {// 不存在// 创建数组ArrayList<LinkMan> list = new ArrayList<>();list.add(linkMan);// 把数组和首字母 放进map中map.put(firstLetter, list);}else {// 这个键值对存在// 用key把对应数组取出来ArrayList<LinkMan> arrayList = map.get(firstLetter);// 把人放进去(去重)if(!arrayList.contains(linkMan)) {      // 数组中不包含这个人的时候再添加arrayList.add(linkMan);}// 这里不用进行重新覆盖 因为arrayList不是重新new出来的// 保存就是map集合中的数组// 操作的是同一个空间// 把值重新覆盖// map.put(firstLetter, arrayList);     }}// 根据电话输出联系人信息// 遍历整个map寻找联系人 // 1.没找到// 2.找到输出联系人的信息public void findLinkManByPhone(String phone) {if(phone.isEmpty() || phone == null) {return;}// 记录法// 定义一个空的引用 来记录找到LinkMan linkMan = null;// 查找联系人for(String str : map.keySet()) {// 找出对应arrayListArrayList<LinkMan> arrayList = map.get(str);// 遍历数组 for(LinkMan man : arrayList) {// 找出号码相同的if(man.getPhone().equals(phone)) {// 记录此人linkMan = man;}}}       // 判断有没有这个 有就输出信息 没有就进行提示if(linkMan == null) {System.out.println(phone + "----查无此号");}else {System.out.println(linkMan);}}// 根据分组查找联系人 并针对姓名进行排序 // 1.有这个分组 2.没这个分组public void findLinkManByGroup(String group) {// 把分组转大写String lowerCase = group.toUpperCase();// 根据分组找对应的数组if(!map.containsKey(lowerCase)) {System.out.println("该分组" + lowerCase + "没有");return;}// 有分组的情况 利用TreeSet排序 操作原arrayListArrayList<LinkMan> arrayList = map.get(lowerCase);// 创建treeSetTreeSet<LinkMan> set = new TreeSet<>(new SortByName());set.addAll(arrayList);arrayList.clear();arrayList.addAll(set);printList(arrayList);}//  遍历arrayList方法public void printList(ArrayList<LinkMan> list) {for(LinkMan linkMan : list) {System.out.println(linkMan);}}// 根据性别查找改性别的所有联系人 并且安装年龄降序排序public void findLinkMansByGender(String gender) {// 判断传的是不是男和女 妖/中性不行if(!(gender.equals("男") || gender.equals("女"))) {System.out.println("该性别" + gender + "无法查询");return;}// 创建一个 容器 保存多个联系人ArrayList<LinkMan>  genderlist = new ArrayList<>();// 遍历集合for(String key : map.keySet()) {ArrayList<LinkMan> arrayList = map.get(key);for(LinkMan linkMan : arrayList) {// 判断性别是否相同 添加到数组中if(gender.equals(linkMan.getGender())) {genderlist.add(linkMan);}}}// 判断数组中 是否有人if(genderlist.isEmpty()) {System.out.println("该分组" + gender + "没人");return;}TreeSet<LinkMan> treeSet = new TreeSet<>(new SortByAge());treeSet.addAll(genderlist);genderlist.clear();genderlist.addAll(treeSet);printList(genderlist);}//删除某个分区的所有联系人public void removeGroup(String group) {String upperGroup = group.toUpperCase();// 判断有没有该分区 有就删了 没有就提示if (!map.containsKey(upperGroup)) {System.out.println("没有该分区" + upperGroup + "不存在");return;}// 有 就直接删除map.remove(upperGroup);// 删完打印printMap();}// 根据姓名删除某个联系人/** 1.有该名字的联系人*   a.分区删除该人之后 没有其他人 需要把分区一起删了*   b.分区删除该人之后 还有其他人 不删分区* 2.没这个名字的人(提示用户没有)*/public void removeLinkedManByName(String name) {// 去除名字的首字母String firstLetter = Pinyin4jUtil.getFirstLetter(name);if(!map.containsKey(firstLetter)) {System.out.println("该分区不存在,没有该联系人");return;}// 记录要删除的人LinkMan removeMan = null;// 记录删除的人所在的数组ArrayList<LinkMan> removeList = null;           // 遍历找名字相同的人for(String key : map.keySet()) {ArrayList<LinkMan> list = map.get(key);for(LinkMan linkMan : list) {// 名字相同if(name.equals(linkMan.getName())) {// 记录要删除的人removeMan = linkMan;// 记录人在的数组removeList = list;}}}// 判断有没有这个人if(removeMan == null) {System.out.println("查无此人");return;}// 把这个人删除removeList.remove(removeMan);// 判断这个数组是不是空的if(removeList.isEmpty()) {// 直接把分区删了removeGroup(firstLetter);return;}printMap();     }// 修改联系人姓名/** 1.有老名字的分区*      a.有这个老名字进行 修改*          1.改名没改首字母(找到这人 调用set方法 直接修改姓名)*          2.改名改首字母*                  1)把利用老人创建一个新人出来*                  2)把老人删了*                  3)直接调用添加方法把新人添加进去*      b.没这个老名字* 2.没有老名字的分区(提示 查无此人 不能修改)*/public void setLinkManByOldNameAndNewName(String oldName, String newName) {// 把名字转换成首字母String oldKey = Pinyin4jUtil.getFirstLetter(oldName);String newKey = Pinyin4jUtil.getFirstLetter(newName);// 创建引用 保存这个人LinkMan oldMan = null;if(!map.containsKey(oldKey)) {System.out.println("无该" + oldKey + "分区不能修改");return;}// 有老分区(查看有 没有老名字的人)ArrayList<LinkMan> oldList = map.get(oldKey);for(LinkMan linkMan : oldList) {// 对比名字if(linkMan.getName().equals(oldName)) {// 名字相同 记录此人oldMan = linkMan;}}// 判断有没有这个老人if(oldMan == null) {System.out.println("没有这个名字" + oldName + "的人");return;}// 判断改没改首字母if(oldKey.equals(newKey)) {// 相等 没改姓oldMan.setName(newName);}else {// 不相等 改姓氏// 利用新名字创建新对象出来LinkMan newLinkMan = new LinkMan(newName,oldMan.getAge(),oldMan.getGender(),oldMan.getAddress(),oldMan.getPhone());// 把老人删了removeLinkedManByName(oldName);addLinkMan(newLinkMan);}}
}
// 按年龄降序
class SortByAge implements Comparator<LinkMan>{@Overridepublic int compare(LinkMan o1, LinkMan o2) {// TODO Auto-generated method stubint num = o2.getAge() - o1.getAge();return num == 0 ? 1 : num;}}
// 按姓名排序
class SortByName implements Comparator<LinkMan>{@Overridepublic int compare(LinkMan o1, LinkMan o2) {int num = o1.getName().compareTo(o2.getName());return num == 0 ? 1 : num;}
}
package com.lanou3g;public class LinkMan {private String name;private int age;private String gender;private String address;private String phone;public LinkMan() {super();// TODO Auto-generated constructor stub}public LinkMan(String name, int age, String gender, String address, String phone) {super();this.name = name;this.age = age;this.gender = gender;this.address = address;this.phone = phone;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "[name=" + name + ", age=" + age + ", gender=" + gender + ", address=" + address + ", phone="+ phone + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((address == null) ? 0 : address.hashCode());result = prime * result + age;result = prime * result + ((gender == null) ? 0 : gender.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result + ((phone == null) ? 0 : phone.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;LinkMan other = (LinkMan) obj;if (address == null) {if (other.address != null)return false;} else if (!address.equals(other.address))return false;if (age != other.age)return false;if (gender == null) {if (other.gender != null)return false;} else if (!gender.equals(other.gender))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (phone == null) {if (other.phone != null)return false;} else if (!phone.equals(other.phone))return false;return true;}}
package com.lanou3g;
/** 测试类*/
public class Test {public static void main(String[] args) {LinkManManager manager = new LinkManManager();manager.addLinkMan(new LinkMan("王炸", 15, "男", "就甘露", "adsasd"));manager.addLinkMan(new LinkMan("王松", 14, "男", "泗泾路", "adsasd"));manager.addLinkMan(new LinkMan("刘忠", 15, "女", "草葫芦", "awwwwsasd"));manager.addLinkMan(new LinkMan("谢", 12, "女", "就甘露", "adsasd"));manager.addLinkMan(new LinkMan("项羽", 19, "男", "泗泾路", "adsasd"));manager.printMap();// 根据电话查找联系人 //manager.findLinkManByPhone("123453");// 根据分组查找联系人//manager.findLinkManByGroup("W");//manager.findLinkMansByGender("女");//manager.removeGroup("A");// 删除联系人根据名字//manager.removeLinkedManByName("刘建忠");manager.setLinkManByOldNameAndNewName("谢", "成龙");manager.printMap();}
}

JAVA高级应用之手机通讯录的实现相关推荐

  1. JAVA趣味课程:手机通讯录管理系统

    本篇博客的内容在之前python基础系列案例中有详细讲解,此次我将使用JAVA语言对手机通讯录管理系统进行重新编写.此案例适用于熟练掌握面向对象基础和List集合的基本操作. 需求分析: 能够循环接收 ...

  2. JAVA趣味课程:手机通讯录管理系统(连接数据库管理信息)

    今天课堂上正好讲到JAVA连接jdbc管理sqlite数据库的操作,讲完他的基本用法之后,就又把之前的手机通讯录管理系统掏出来,改装完成数据库版本的增删改查等存取工作.那么下面开始需求分析以及逻辑编码 ...

  3. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  4. Java:任务描述:手机通讯录的实现

    任务描述:手机通讯录的实现 设计并实现手机通讯录,主要功能包括:联系人信息录入.联系人信息查询与统计.联系人信息修改和删除.备份与恢复,支持可视化界面. 本题要求完成以下内容: 1. 请按面向对象 ...

  5. 纯java手机通讯录

    要求 1.查看全部通讯录的信息 2.实现新增人员功能 3.修改用户信息功能 4.删除数据功能 5.查找人员功能实现 IOperatorMobile.java package com.geminno.m ...

  6. Java手机通讯录并实现自动发送QQ消息及单人视频聊天窗口

    目录 Java手机通讯录并实现自动发送QQ消息及单人视频聊天窗口 1. 原始问题描述 2. 实现效果​             ​            ​              ​ 3.部分源码 ...

  7. java手机通讯录格式转换_通讯录格式转换器设计与开发(JAVA平台)

    通讯录格式转换器设计与开发(平台)(任务书,开题报告,文献综述,中期检查表,外文翻译,毕业论文17000字,程序代码) 本文从当前社会人们需求出发,首先介绍了人们在处理手机信息和网络信息交互时的极大不 ...

  8. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  9. java手机通讯录格式转换_xml转换成vcf 魅族手机通讯录Contact.xml备份在flyme上的恢复(Java/C#实现xml转vCard)...

    xml转换成vcf 魅族手机通讯录Contact.xml备份在flyme上的恢复(Java/C#实现xml转vCard) 分类:杂谈| 发布:佚名| 查看: | 发表时间:2014/6/10 由上一篇 ...

最新文章

  1. 【转载】PHP 常用的header头部定义汇总
  2. easypoi导出数值型_SpringBoot使用EasyPoi进行数据导入导出Excel(一)
  3. php导出excel表格需要隐藏行,php - 隐藏或删除列时PHPExcel导出图像问题 - 堆栈内存溢出...
  4. Jvisualvm--JAVA性能分析工具
  5. 事件监听机制——鼠标事件MouseEvent
  6. VC 开机自动启动程序 方法
  7. 前端学习(1757):前端调试值之网络条件与user-Agent的设置
  8. 局域网用与管理计算机,计算机局域网的组建与管理.pdf
  9. java回调函数(callBack)
  10. Java编写飞机大战(超级详细的完整版)--附源码及图片
  11. linux工具apt、yum和dnf运用
  12. PG in not in系列方案比较
  13. 可视化 | 人物画像的设计方法
  14. ZBrush中的法线贴图你知道吗?
  15. 光标右侧小圆圈一直闪,输入法一直不停中英文切换
  16. 如何用wamp运行php代码,请问如何将已经写好的PHP代码部署到WAMP环境中
  17. JavaScript:函数的可选参数
  18. php刷脸登录,PHP实现微信小程序人脸识别刷脸登录功能
  19. 用python语言解一元二次方程
  20. C语言strstr()函数用法-字符串查找

热门文章

  1. 自主开发的遥感图像数据处理系统
  2. 小程序中使用echarts
  3. 重构手法之重新组织函数
  4. nginx文件服务器5万并发量,Nginx服务器高性能优化-轻松实现10万并发访问量
  5. gt爵士变形步骤_代码广播简介:编码时您可以收听的24/7爵士节奏
  6. 一文彻底搞懂go mod使用
  7. 码出高效_第一章 | 有意思的二进制表示及运算
  8. html5的新特性-audio
  9. 适用于WordPress的10个最佳白标签品牌插件
  10. 微信小程序商城15天从零实战视频课程-收货地址列表