Java:Java面试问题的澄清

标签 java comparator

<分区>

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

1>我有下面的课

 class CricketTeam{             
   String name; //this is the complete name(inclusive of first and last name)          
 }             

板球运动员姓名如下:

1>萨钦·滕杜尔卡
2>高塔姆甘比尔
3>瑞奇庞廷
4>沙希德·阿夫里迪
5>凯文·皮特森
6> MS Dhoni

我想按他们的姓氏对上面的板球运动员姓名进行排序。不胜感激提供的建议/代码。

2>使用增强的for循环有什么好处 java 中的 iterator。在 java 中使用增强的 for 循环有什么优点?为什么在 iterator 可以完成这项工作时首先在 java 中引入它?

最佳答案

  1. 实现一个比较器,它从球员姓名中解析姓氏并进行比较,然后使用该比较器对板球运动员的集合进行排序。
    一个简单的示例(没有错误处理,并假设所有玩家都只有一个名字而没有中间名):

    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());
    
  2. 它更干净、更简洁、更安全(例如,当迭代器因多次调用 next() 而意外地过于频繁地递增时,避免了多个嵌入式循环中的特定细微错误)。
    代码示例(来自 Effective Java 2nd Edition,项目 46:比传统的 for 循环更喜欢 for-each 循环):

    // 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()));
    

关于Java:Java面试问题的澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566996/

相关文章:

c++ - 如何为优先级队列预分配内存?

java - 队列接口(interface)困惑

Java 的比较器契约

java - HTTPS - Spring Web Security - 如何确保服务器安全

java - 我如何知道对象中存在哪些变量?

java - 小程序中的netty抛出AccessControlException

java - 在哪些情况下 equals() 类似于 ==?

java - 检查 HashMap 键是否存在时出错

c++ - 如何在运行时指定 priority_queue 的比较器类

C++ qsort 指针数组不排序