List中对中文名排序
导入架包
对输入到集合中的中文名字进行排序处理,学会如何导入架包,导入架包的时候不要导错;以下是我的架包:
实体类
员工类
public class Emp {
private int no;
private String name;
private String sex;
private String position;
private int age;
private String salary;
private Dept dept;
//1.构造无参构造器,有参构造器
//2.Setter,getter对其封装
}
部门类
public class Dept {
private int number;
private String deptment;
private String introduction;
private int extension;
//1.构造无参构造器,有参构造器
//2.Setter,getter对其封装
}
管理类
public class DeptManager {
static List list = new ArrayList();
public boolean addEmp(Emp e) {
return list.add(e);
}
public List findEmp() {
return list;
}
//姓名排序
public List findByEmpname(){
Collections.sort(list, new Comparator() {
@Override
public int compare(Emp o1, Emp o2) {
String name1 = "" ;
String name2 = "";
for (int i = 0; i < o1.getName().length(); i++) {
char c = o1.getName().charAt(i);
String str1 = PinyinHelper.toHanyuPinyinStringArray(c)[0];
name1 += str1;
for (int j = 0; j < o2.getName().length(); j++) {
char c2 = o2.getName().charAt(i);
String str2 = PinyinHelper.toHanyuPinyinStringArray(c2)[0];
name2 += str2;
}
}
return name1.compareTo(name2);
}
});
return list;
}
public List<Emp> findDeptname() {
list.sort(new Comparator<Emp>() {
@Override
public int compare(Emp o1, Emp o2) {
String name1 = "";
String name2 = "";
for (int i = 0; i < o1.getDept().getDeptment().length(); i++) {
char c = o1.getDept().getDeptment().charAt(i);
String str1 = PinyinHelper.toHanyuPinyinStringArray(c)[0];
name1 += str1;
for (int j = 0; j < o2.getDept().getDeptment().length(); j++) {
char c2 = o2.getDept().getDeptment().charAt(i);
String str2 = PinyinHelper.toHanyuPinyinStringArray(c2)[0];
name2 += str2;
}
}
return name1.compareTo(name2);
}
});
return list;
}
}
修改类
public class Client {
DeptManager ma = new DeptManager();
Scanner sc = new Scanner(System.in);
public void init() {
Dept dt1 = new Dept(1001,"干饭部","专门吃饭", 1008611);
Dept dt2 = new Dept(1002,"加班部"," 9 9 1 ",1008612);
Dept dt3 = new Dept(1003,"通宵部","通宵达旦 ", 1008613);
Emp e1 = new Emp(10, "小非", "男", "董事长二", 40, "90万", dt1);
Emp e2 = new Emp(11, "火鸡", "女", "艺术总监", 28, "30万", dt2);
Emp e3 = new Emp(12, "大人", "男", "产品经理", 25, "20万", dt3);
ma.addEmp(e3);
ma.addEmp(e1);
ma.addEmp(e2);
}
public void findEmpname() {
List<Emp> list = ma.findEmp();
System.out.println("工号\t姓名\t性别\t职位\t年龄\t月薪\t部门名\t分机号");
for (Emp emp : list) {
System.out.println(emp.getNo()+"\t"+emp.getName()+"\t"+emp.getSex()+"\t"+emp.getPosition()
+"\t"+emp.getAge()+"\t"+emp.getSalary()+"\t"+emp.getDept().getDeptment()+"\t"+emp.getDept().getExtension());
}
}
public void findByPinyinname() {
List<Emp> list = ma.findByEmpname();
System.out.println("工号\t姓名\t性别\t职位\t年龄\t月薪\t部门名\t分机号");
for (Emp emp : list) {
System.out.println(emp.getNo()+"\t"+emp.getName()+"\t"+emp.getSex()+"\t"+emp.getPosition()
+"\t"+emp.getAge()+"\t"+emp.getSalary()+"\t"+emp.getDept().getDeptment()+"\t"+emp.getDept().getExtension());
}
}
public void findByPinyindept() {
List<Emp> list = ma.findDeptname();
System.out.println("工号\t姓名\t性别\t职位\t年龄\t月薪\t部门名\t分机号");
for (Emp emp : list) {
System.out.println(emp.getNo()+"\t"+emp.getName()+"\t"+emp.getSex()+"\t"+emp.getPosition()
+"\t"+emp.getAge()+"\t"+emp.getSalary()+"\t"+emp.getDept().getDeptment()+"\t"+emp.getDept().getExtension());
}
}
}
测试类
public class TestClient {
public static void main(String[] args) {
Client ct = new Client();
//初始化对象
ct.init();
//显示全部员工信息
ct.findEmpname();
System.out.println("###########");
//对员工名字进行拼音排序
ct.findByPinyinname();
System.out.println("###########");
//对部门名进行拼音排序
ct.findByPinyindept();
}
}
测试结果
//代码还可以进一步精简
总结:
1.对泛型集合有清晰的概念;
2.灵活运用多态的思想;
3.集合中的排序能够掌握;
4.正确导入架包。