Java 需要帮助为我的工作面试代码示例编写一个比较程序
我需要帮助来编写一个比较器:-Java 需要帮助为我的工作面试代码示例编写一个比较程序,java,comparator,Java,Comparator,我需要帮助来编写一个比较器:- public class LastNameComparator implements Comparator<Person> { public int compare(Person name_one, Person name_two) { // TODO Auto-generated method stub if(name_one.getGender().equals(name_two.getGender())){
public class LastNameComparator implements Comparator<Person> {
public int compare(Person name_one, Person name_two) {
// TODO Auto-generated method stub
if(name_one.getGender().equals(name_two.getGender())){
return name_one.getLast_name().compareTo(name_two.getLast_name());
}else{
return name_one.getLast_name().compareTo(name_two.getLast_name());
}
}
}
我想要这个输出:-
Martin Joseph Male 4/2/1979 Green
Ramya Patil Female 5/4/2009 Red
Don kelly Male 5/6/1986 Yellow
Van Shinde female 3/4/1984 Green
Output 1:
Van Shinde female 3/4/1984 Green
Don kelly Male 5/6/1986 Yellow
Ramya Patil Female 5/4/2009 Red
Martin Joseph Male 4/2/1979 Green
但我得到以下输出:-
Martin Joseph Male 4/2/1979 Green
Ramya Patil Female 5/4/2009 Red
Don kelly Male 5/6/1986 Yellow
Van Shinde female 3/4/1984 Green
Output 1:
Van Shinde female 3/4/1984 Green
Don kelly Male 5/6/1986 Yellow
Ramya Patil Female 5/4/2009 Red
Martin Joseph Male 4/2/1979 Green
如何按姓氏排序,保持列表的顺序不变。。我的意思是我想先输出女性姓氏排序,然后输出男性姓氏排序。。。请帮帮我,伙计们
这是我在使用性别比较器后使用的比较器:-
public class LastNameComparator implements Comparator<Person> {
public int compare(Person name_one, Person name_two) {
// TODO Auto-generated method stub
if(name_one.getGender().equals(name_two.getGender())){
return name_one.getLast_name().compareTo(name_two.getLast_name());
}else{
return name_one.getLast_name().compareTo(name_two.getLast_name());
}
}
}
公共类LastNameComparator实现Comparator{
公共整数比较(人名1,人名2){
//TODO自动生成的方法存根
如果(name_one.getGender().equals(name_two.getGender())){
返回name_one.getLast_name().compareTo(name_two.getLast_name());
}否则{
返回name_one.getLast_name().compareTo(name_two.getLast_name());
}
}
}
作为对cletus答案的补充,这里有一个使用a的版本(来自Apache Commons Lang):
作为对cletus答案的补充,这里有一个使用a的版本(来自ApacheCommonsLang):
当我阅读OP中的代码时,我发现您总是返回按姓氏进行比较的结果:
If genders are equal
then compare last names
else compare last names
然而,这与你所说的实验结果没有多大关系;因此,除了修改您的代码以符合Cletus的建议外,您的代码可能还有其他问题。当我在您的OP中阅读代码时,我发现您总是返回按姓氏进行比较的结果:
If genders are equal
then compare last names
else compare last names
然而,这与你所说的实验结果没有多大关系;因此,除了修改您的代码以符合Cletus的建议外,您的代码可能还存在其他问题。Cletus的解决方案可能是最合适的,但如果您想更进一步
LastNameComparator
的名称相当误导,因为它实际上是在性别和姓氏上进行比较的。将此功能拆分为两个独立的比较器可能不那么模棱两可:
class GenderComparator implements Comparator<Person> {
public int compare(Person a, Person b) {
return a.getGender().compareTo(b.getGender());
}
}
class LastNameComparator implements Comparator<Person> {
public int compare(Person a, Person b) {
return a.getLastName().compareTo(b.getLastName());
}
}
它更复杂,但更灵活和可重用。(对于这样一个简单的案例,这可能是合理的,也可能不是合理的。)Cletus的解决方案在这里可能是最合适的,但是如果你想更进一步
LastNameComparator
的名称相当误导,因为它实际上是在性别和姓氏上进行比较的。将此功能拆分为两个独立的比较器可能不那么模棱两可:
class GenderComparator implements Comparator<Person> {
public int compare(Person a, Person b) {
return a.getGender().compareTo(b.getGender());
}
}
class LastNameComparator implements Comparator<Person> {
public int compare(Person a, Person b) {
return a.getLastName().compareTo(b.getLastName());
}
}
它更复杂,但更灵活和可重用。(对于这种简单的情况,这可能是合理的,也可能不是合理的。)这应该是相对简单的:
以下是您指定的规则:
- 女性先于男性
- 按姓氏升序排序的姓名
你可以这样做:
// if the genders are not equal, return <0 if this object's gender is female
// else
// return lastName.compareTo( obj.lastName );
//如果性别不相等,返回这应该相对简单:
以下是您指定的规则:
- 女性先于男性
- 按姓氏升序排序的姓名
你可以这样做:
// if the genders are not equal, return <0 if this object's gender is female
// else
// return lastName.compareTo( obj.lastName );
//如果性别不相等,则返回任何值,它看起来像您的getLast_name()可能是罪魁祸首。为工作面试代码样本寻求帮助似乎是不道德的……除非潜在雇主知道你正在获得帮助。希望面试官也这么认为……如果你的和结果相同,那么你的。想知道你为什么需要一个条件吗?有趣的是,我问采访我的人是否有这样的账户。如果我看到我提出的问题中有一个是经过深思熟虑的,有着明确知识的OP,我会倾向于赞同他们。不幸的是,这个问题在谈到OP时并没有给人留下很好的印象……如果有的话,它看起来像你的getLast_name()可能是罪魁祸首。为工作面试代码样本寻求帮助似乎是不道德的……除非潜在雇主知道你正在获得帮助。希望面试官也这么认为……如果你的和结果相同,那么你的。想知道你为什么需要一个条件吗?有趣的是,我问采访我的人是否有这样的账户。如果我看到我提出的问题中有一个是经过深思熟虑的,有着明确知识的OP,我会倾向于赞同他们。不幸的是,这个问题在谈到OP时给人的印象不是很好……如果你喜欢的话,apache commons有内置的comparator链接:因此commonsComparators
类的相关代码应该是comparator c=Comparators.chain(new GenderComparator(),new LastNameComparator())代码>。如果您喜欢,apache commons具有内置的comparator链接:因此commonsComparators
类的相关代码应该是comparator c=Comparators.chain(new GenderComparator(),new LastNameComparator())代码>。看起来很整洁。