利用正则表达式将字符串拆分及比较器的基本运用

利用正则表达式将字符串"张三:21:98|李四:22:89|王五:20:98"拆分,而后把内容保存在Student对象中,利用比较器排序输出

  • 创建Student类,继承了Comparable接口,指定泛型为类
class Student implements Comparable<Student>{//指定泛型为Student
	private String name;
	private int age;
	private int grade;
	public void setName(String name){this.name=name;}
	public void setAge(int age){this.age=age;}
	public void setGrade(int grade){this.grade=grade;}
	public String getName(){return this.name;}
	public int getAge(){return this.age;}
	public int getGrade(){return this.grade;}
	public Student(String name,int age,int grade){
		this.setName(name);
		this.setAge(age);
		this.setGrade(grade);
	}
	public String toString(){//覆写toString方法
		return "姓名:"+this.getName()+"\t年龄:"+this.getAge()+"\t\t分数:"+this.getGrade();
	}
	public int compareTo(Student s) {//按照分数大优先,年龄小优先的规则覆写比较器的compareTo方法
		if(this.getGrade()>s.getGrade()){
			return -1;
		}else if(this.getGrade()<s.getGrade()){
			return 1;
		}else{
			if(this.getAge()<s.getAge()){
				return -1;
			}else if(this.getAge()>s.getAge()){
				return 1;
			}else{
				return 0;
			}
		}
	}
}
  • 主加载类,将指定字符串拆分。具体过程为:先将字符串按照"|“拆分成三个字符串,再将这三个字符串按照”:"各拆分成Student类中的属性,而后创建对象,利用比较器排序输出
public class Train{
	public static void main(String args[]){
		String str="张三:21:98|李四:22:89|王五:20:98";//将要拆分的字符串
		String []s=str.split("\\|");//一级拆分,按照"|"来拆分,拆成三个字符串
		String []san1=s[0].split("\\:");//二级拆分,按照":"来拆分,拆成三个更小的字符串
		String []san2=s[1].split("\\:");//二级拆分,按照":"来拆分,拆成三个更小的字符串
		String []san3=s[2].split("\\:");//二级拆分,按照":"来拆分,拆成三个更小的字符串
		String san1m=san1[0];
		String san2m=san2[0];
		String san3m=san3[0];
		int san1a=Integer.parseInt(san1[1]);//强制类型转换,将字符串数字转换为int类型数字
		int san2a=Integer.parseInt(san2[1]);
		int san3a=Integer.parseInt(san3[1]);
		int san1g=Integer.parseInt(san1[2]);
		int san2g=Integer.parseInt(san2[2]);
		int san3g=Integer.parseInt(san3[2]);
		Student s1=new Student(san1m,san1a,san1g);//创建Student对象
		Student s2=new Student(san2m,san2a,san2g);
		Student s3=new Student(san3m,san3a,san3g);
		Student[]a={s1,s2,s3};//对象数组
		java.util.Arrays.sort(a);//调用数组排序算法(会自动按照已经设置好的比较规则来排序)
		for(int i=0;i<a.length;++i){//输出
			System.out.println(a[i]);
		}
	}
}
  • 不足之处
    实现过程比较繁琐,感觉拆分那一块应该可以运用二维数组
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页