我最近参加了Java面试问题并得到了以下查询,我不知道答案
1>我有下课
class CricketTeam{
String name; //this is the complete name(inclusive of first and last name)
}
Run Code Online (Sandbox Code Playgroud)
板球运动员的名字如下:
1> Sachin Tendulkar
2> Gautam Gambhir
3> Ricky Ponting
4> Shahid Afridi
5> Kevin Pieterson
6> MS Dhoni
我想通过他们的last name only.Suugestions /代码对上面的Cricket Players名称进行排序.我们将不胜感激.
2> 在java 中使用enhanced for loop反对
iterator有什么好处.在java中使用增强的for循环的优点是什么?为什么它可以在java工作时首先在java中引入iterator.
Pét*_*rök 10
实现一个Comparator从玩家名称中解析姓氏并对其进行比较,然后使用该比较器对板球运动员的集合进行排序.
一个简单的例子(没有错误处理,假设所有玩家只有一个名字而没有中间名):
class CricketTeamComparator implements Comparator<CricketTeam> {
@Override
public int compare(CricketTeam o1, CricketTeam o2) {
String lastName1 = o1.name.split(" ")[1];
String lastName2 = o2.name.split(" ")[1];
return lastName1.compareTo(lastName2);
}
}
...
List<CricketTeam> team = new ArrayList<CricketTeam>();
...
Collections.sort(team, new CricketTeamComparator());
Run Code Online (Sandbox Code Playgroud)它更干净,更简洁,更安全(例如,当迭代器通过调用next()太多次而意外增加时,避免了多个嵌入循环中的特定细微错误).
代码示例(来自Effective Java 2nd Edition,Item 46:Prefer for-each loops to traditional for loops):
// Can you spot the bug?
enum Suit { CLUB, DIAMOND, HEART, SPADE }
enum Rank { ACE, DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
NINE, TEN, JACK, QUEEN, KING }
...
Collection<Suit> suits = Arrays.asList(Suit.values());
Collection<Rank> ranks = Arrays.asList(Rank.values());
List<Card> deck = new ArrayList<Card>();
for (Iterator<Suit> i = suits.iterator(); i.hasNext(); )
for (Iterator<Rank> j = ranks.iterator(); j.hasNext(); )
deck.add(new Card(i.next(), j.next()));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |