java面向对象题

Seven的代码实验室 2013-01-17 12:42:07
请设计一个具备比较功能的类(例如 员工类, 需要有姓名, 年龄, 薪水三个成员属性需要私有并提供get, set方法, 可以通过构造函数进行初始化,并且按照薪水进行排序)
题目有点看不懂!它是要求我根据薪水对什么进行排序啊?
求大神帮助,希望写出详细代码!
...全文
304 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
重点就是一个“比较”,一个类中包含姓名, 年龄, 薪水三个属性,比较的应该是薪水这个属性,比如定义俩对象,通过get薪水,然后比较他们的大小。
放开那个衰锅 2013-01-17
  • 打赏
  • 举报
回复
楼主可以让该对象实现一个Comparable的接口 然后重写那个比较的方法 比较的依据就是工资那个属性 没记错的话 原来方法是return 0. 那么你改成return this.salary - other.salary 这样的话 你如果对象放在数组里 那就用Arrays.sort()这个方法,如果用TreeSet就可以直接搞定了 lz加油 TreeSet也可以写个比较器 这个自己看看api
cstbuctlz 2013-01-17
  • 打赏
  • 举报
回复
引用 9 楼 suciver 的回复:
单个对象哪来的什么排序,只有到了数组或集合中才有存在排序一说
题目的意思是设计一个可以用Collections对List<Employee>排序的类
regInternet 2013-01-17
  • 打赏
  • 举报
回复
测试代码里
TreeSet<Employee> employees = new TreeSet<Employee>(new EmployeeSalaryAscComparator());
这么些,写少了
regInternet 2013-01-17
  • 打赏
  • 举报
回复
楼主是需要这个意思么?
public class Employee {
	
	private String userName;
	private int age;
	private Double salary;
	
	
	public Employee(String userName, int age, double salary) {
		this.userName = userName;
		this.age = age;
		this.salary = salary;
	}
	
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder(256);
		sb.append("{userName:").append(userName);
		sb.append("age:").append(age);
		sb.append("salary:").append(salary).append("}");
		return sb.toString();
	}
// getter、setter方法
   ..........
}
/**
 * 根据工资进行升序的
 *
 */
public class EmployeeSalaryAscComparator implements Comparator<Employee> {

	@Override
	public int compare(Employee o1, Employee o2) {
		return o1.getSalary().compareTo(o2.getSalary());
	}
	 
}
/**
 * 测试
 *
 */
public class EmployeeTest {
	private static final Log log = LogFactory.getLog(EmployeeTest.class);
	@Test
	public void test() {
		TreeSet<Employee> employees = new TreeSet<>(new EmployeeSalaryAscComparator());
		employees.add(new Employee("test3", 24, 42345.67));
		employees.add(new Employee("test1", 21, 12345.67));
		employees.add(new Employee("test2", 23, 32345.67));
		
		for (Employee employee : employees) {
			log.info(employee);
		}
	}
}
执行结果 : {userName:test1age:21salary:12345.67} {userName:test2age:23salary:32345.67} {userName:test3age:24salary:42345.67}
suciver 2013-01-17
  • 打赏
  • 举报
回复
单个对象哪来的什么排序,只有到了数组或集合中才有存在排序一说
  • 打赏
  • 举报
回复
将员工的薪水保存到数组里吗?
JPF1024 2013-01-17
  • 打赏
  • 举报
回复
初学的自己先去理解下思想吧。。。
class Test {

   public Test(){
      //在这里面赋给变量初值.

}

   private String name ;
  private  int age ;
  private double money ;
  
//set,get自己补充.




}
简单给你敲了一个,其余的自己补充吧, 可以给你个思路: 1.在构造器里面进行初始化, 2.用薪水排序就是: 姓名 年龄 薪水 x 23 2000 y 18 1800 z 21 1700 这样按照薪水的高低排序.最简单的方法,可以用数组对他们进行排序。 刚开始都难,慢慢来吧。。加油!
rome_wu 2013-01-17
  • 打赏
  • 举报
回复
工资怎么可能是long类型,一点常识都没!!!
「已注销」 2013-01-17
  • 打赏
  • 举报
回复
public boolean compare(long l1,long l2){ //写一个比较l1和l2大小的方法。 }
「已注销」 2013-01-17
  • 打赏
  • 举报
回复
楼主不要听楼上的,他的解答不正确。 自己做吧,初学java的孩纸伤不起啊,不想学没必要学这个的。
seuer126 2013-01-17
  • 打赏
  • 举报
回复
2楼的方法正确的。
失落夏天 2013-01-17
  • 打赏
  • 举报
回复
重写一个compare方法。 public Class User{ private String name; private String id; private Long salary; public void setName(String name) { this.name = name; } public String getName() { return name; } //剩下的一样 public boolean compare(long l1,long l2){ //写一个比较l1和l2大小的方法。 } }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧