我最近参加了Java面试问题,遇到了以下我不知道答案的问题
我在下面的课程中有1>
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 loop与iterator相比有什么优点?在java中使用增强的for循环的优点是什么?当iterator可以完成这项工作时,为什么在java中首先引入它?
发布于 2011-04-06 21:20:53
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());
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();
发布于 2011-04-06 21:27:14
1.检查以下示例代码:
// 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.它更具可读性,更易于使用,并隐藏了不必要的细节。
发布于 2011-04-06 21:23:04
对于问题1,是否可以根据_( name )分隔符拆分空格字符串,然后根据name_arr[1]数组元素进行排序?对要报告的数组元素进行“重新分组”。
下面是一个使用简单数组的代码示例。由于要求是根据姓氏进行排序,因此这将根据空格分隔符拆分字符串,翻转生成的名称,对数组进行排序,然后通过“重新翻转”进行重新排序(困惑,还?:)
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;
}对于第二个问题,可读性是我个人的偏好...
https://stackoverflow.com/questions/5566996
复制相似问题