记得以前面试的时候碰到过一个面试题,大致是这个意思:有个对象,姑且叫Dog吧,Dog有身高,现在按Dog的身高进行排序
今天突然想起来,其实这个面试题,从表面看靠的是排序,有数据结构的内容,再深点看,是看你有多少经验,这个可以用
接口Comparable或者Comparator来解决,再深一点的层次,是考你的设计模式,这个用到的就是策略模式。对多态的一个很好的理解。
接口
public interface Comparable {
int compareTo(Object o);
}
首先是帮助类
@Override (实现comparable接口,这个comparable是java自带的)
public int compare(Object o1, Object o2) {
int i1 = (Integer)o1;
int i2 = (Integer)o2;
return (i1<i2?-1:(i1==i2?0:1));
}
或者
public static void sort(Object[] objects){
for (int i = objects.length; i > 0; i--) {
for (int j = 0; j < i-1; j++) {
if (((Comparable)objects[j]).compareTo((Comparable)objects[j+1]) == 1) {
swap(objects,j ,j+1);
}
}
}
}
private static void swap(Object[] objects, int i, int j) {
Object temp;
temp = objects[i];
objects[i] = objects[j];
objects[j] = temp;
}
Dog类 重写compareTo方法
@Override
public int compareTo(Object o) {
Dog dog = (Dog) o;
return (this.food < dog.food ?-1:(this.food == dog.food ?
0:1));
}
一点见解,高手指点
分享到:
相关推荐
### Java面向对象面试题解析 #### 1. super()与this()的区别? 在Java中,`super()` 和 `this()` 都是关键字,用于在构造函数中引用父类的构造函数和当前类的其他构造函数。 - **super()**:在子类的构造函数中,...
Java 面试题基础篇是面向Java开发人员的一份详细的面试题库,涵盖了 Java 的基础知识点,包括面向对象编程、变量作用域、事件委托机制、垃圾回收机制、序列化、排序算法、继承、多态、内部类、Collection 框架等。...
中软面试题涵盖了多个IT领域的知识点,包括Java编程、XML解析、JNDI、设计模式、面向对象编程、集合框架、排序算法和数据库查询等。下面将逐一解读这些知识点。 抽象类和接口 抽象类和接口是Java编程中两种重要的...
1. **编程语言**:面试者可能被要求展示对一种或多种编程语言(如Java、Python、C++、JavaScript)的熟练程度,包括语法、面向对象编程、异常处理、内存管理等方面的知识。 2. **数据结构**:理解并运用各种数据...
为了在Java面试中脱颖而出,了解和掌握常见的面试题及答案至关重要。以下是一些关键知识点的详细解析: 1. **super()与 this()的区别** `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则...
以上内容是根据"2021年JAVA开发面试题"这个主题推测出的可能涵盖的知识范围。由于提供的压缩文件列表仅包含.jpg图像文件,无法直接提供具体面试题目的详细内容。通常,面试题可能会以文字文档、PDF或文本文件的形式...
` 创建了两个对象: 一个字符串常量和一个`String`对象。 8. **Math.round 方法** - `Math.round(11.5)` 返回 12。 - `Math.round(-11.5)` 返回 -11。 - `Math.round` 方法通过加 0.5 后向下取整的方式计算最...
"2019互联网面试题第2季"聚焦了这一年度的重要面试趋势和热门问题,旨在帮助求职者更好地准备并理解面试官可能提出的各种问题。这份资料可能包含一系列的面试题目、解答以及相关思维导图,帮助求职者系统地梳理和...
### Java面试题知识点概览 #### 面向对象概念 1. **super()与this()的区别**: - `super()`用于调用父类的构造方法或父类成员方法。 - `this()`用于调用本类中的其他构造方法。 2. **作用域public, protected, ...
- 举例说明如何自定义一个函数对象,并在STL算法中使用。 - 描述STL容器的内存管理和效率特点,比如vector的连续存储和list的跳跃访问。 4. **STL.doc** 另一份全面的STL文档可能详细解释了各个组件的内部工作...
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在Java面试中,面试官通常会考察应聘者的编程基础、数据结构与算法、多线程、网络编程、设计模式、数据库、框架应用等...
常见的SQL面试题涵盖以下几个方面: 1. 数据库基本概念:理解数据库、表、列、主键、外键等概念。 2. SELECT语句:熟练掌握选择、投影、联接、分组、排序、分页等查询操作。 3. 数据操作:了解INSERT、UPDATE、...
代理模式为其他对象提供一个代理以控制对该对象的访问。在Spring框架中,代理模式常用于AOP(Aspect-Oriented Programming)实现,通过动态代理技术为方法调用添加横切关注点的功能。 #### Spring框架中的AOP实现 ...
在面试题31中,要求开发一个继承System.Windows.Forms.ListView类的组件,具有特殊的排序功能。解决思路是根据点击的列头,获取该列的ID,然后按照该ID排序,并将其绑定到ListView中。 2. 遍历 XML 文件 在面试题...
在IT行业的面试中,C++作为一门强大的编程语言,其面试题往往涵盖了广泛的知识领域,包括基础语法、面向对象编程、模板、STL、内存管理、多线程、异常处理等。以下是一些可能出现在“C++经典50大面试题”中的关键...
由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。 九、主键和外键 主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立...
Java是世界上最流行的编程语言之一..."WAP订购关系管理系统接口规范.pdf"可能是关于如何设计和实现一个高效、可扩展的系统接口的指南,而"面试题学习"可能包含了更多具体的面试题目和解析,可以帮助你更好地准备面试。
本资源包聚焦于C语言实现的数据结构面试题,旨在帮助应聘者准备相关面试,提升对数据结构和算法的理解。 一、链表 链表是一种线性数据结构,与数组不同,它在内存中不是连续存储的。每个节点包含数据和指向下一个...
本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...
面试题15:一个参数可以既是const又是volatile吗 面试题16:一个指针可以是volatile吗 第5章 引用和指针 5.1 引用 面试题1:什么是引用 面试题2:常引用有什么作用 面试题3:流操作符重载为什么返回引用 5.2 指针 ...