首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :Java面试问题中的澄清

Java :Java面试问题中的澄清
EN

Stack Overflow用户
提问于 2011-04-06 21:18:27
回答 3查看 2.7K关注 0票数 2

我最近参加了Java面试问题,遇到了以下我不知道答案的问题

我在下面的课程中有1>

代码语言:javascript
复制
 class CricketTeam{             
   String name; //this is the complete name(inclusive of first and last name)          
 }             

板球运动员名单如下:

1> Sachin Tendulkar

2> Gautam Gambhir

3> Ricky Ponting

4> Shahid Afridi

5> Kevin Pieterson

6> MS Dhoni

我想按他们的last name only对上述板球运动员的名字进行排序。提供的建议/代码将不胜感激。

2>在java.what中使用enhanced for loopiterator相比有什么优点?在java中使用增强的for循环的优点是什么?当iterator可以完成这项工作时,为什么在java中首先引入它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-06 21:20:53

  1. 实现了一个Comparator,它从球员名字中解析出姓氏并对其进行比较,然后使用该比较器对板球运动员的集合进行排序。

一个简单的例子(没有错误处理,假设所有玩家只有一个名字,没有中间名):

类CricketTeamComparator实现了比较器{ @Override public int compare(CricketTeam o1,CricketTeam o2) { String lastName1 = o1.name.split(“")1;String lastName2 = o2.name.split(”")1;return lastName1.compareTo(lastName2);}} ...列表团队=新的ArrayList();...Collections.sort(团队,新的CricketTeamComparator());

  • it更干净,更简洁,更安全(例如,避免了多个嵌入式循环中的特定细微错误,当迭代器因调用next()次数过多而意外增加时)。

代码示例(摘自Effective Java 2nd Edition,第46项:首选for-each循环而不是传统的for循环):

//你能发现bug吗?枚举花色{俱乐部,钻石,心脏,黑桃}枚举排名{ ACE,平局,三,四,五,六,七,八,九,十,杰克,皇后,国王} ...集合套装= Arrays.asList(Suit.values());集合排名= Arrays.asList(Rank.values());列表卡牌=新的ArrayList();for (迭代器i= suits.iterator();i.hasNext();) for (迭代器j= ranks.iterator();j.hasNext();)deck.add(新卡片(i.next(),j.next();

票数 10
EN

Stack Overflow用户

发布于 2011-04-06 21:27:14

1.检查以下示例代码:

代码语言:javascript
复制
// assuming this is the list with cricket players
List<CricketTeam> team; 

Collections.sort(team, new Comparator<CricketTeam>) {
    int compare(CricketTeam o1, CricketTeam o2) {
        return o1.name.split(" ")[1].compareTo(o2.name.split(" ")[1])
    }
}

2.它更具可读性,更易于使用,并隐藏了不必要的细节。

票数 2
EN

Stack Overflow用户

发布于 2011-04-06 21:23:04

对于问题1,是否可以根据_( name )分隔符拆分空格字符串,然后根据name_arr[1]数组元素进行排序?对要报告的数组元素进行“重新分组”。

下面是一个使用简单数组的代码示例。由于要求是根据姓氏进行排序,因此这将根据空格分隔符拆分字符串,翻转生成的名称,对数组进行排序,然后通过“重新翻转”进行重新排序(困惑,还?:)

代码语言:javascript
复制
public static String[] FlipAndSort (String[] name) {

        for (int i=0;i<name.length;i++) {
            String [] flip = name[i].split(" ");
            name[i]=flip[1]+" "+flip[0];
        }
        Arrays.sort(name);
        for (int i=0;i<name.length;i++) {
            String [] flip = name[i].split(" ");
            name[i]=flip[1]+" "+flip[0];
        }
        return name;
    }

对于第二个问题,可读性是我个人的偏好...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5566996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档