我最近被要求为一份工作编写3个测试程序.它们只使用核心Java API和我选择的任何测试框架编写.应在适当情况下实施单元测试.
虽然我没有收到任何反馈,但我认为他们不喜欢我的解决方案(否则我会听到他们的意见),所以我决定在这里展示我的程序并询问这个实现是否可以被认为是好的,并且,如果没有,那么为什么呢?
为避免混淆,我现在只问第一个.
实现一个函数,在另一个更大的数组中查找数组.它应该接受两个数组作为参数,它将返回第一个数组首先出现的第一个数组的索引.例如,findArray([2,3,7,1,20],[7,1])应返回2.
我没有尝试找到任何现有的解决方案,而是想自己做.
可能的原因:1.应该是静态的.2.应该使用行注释而不是块注释.3.没有先检查空值(我知道,发现太晚了).4.?
更新:提出了
很多原因,我很难选择一个答案,因为很多答案都有很好的解决方案.正如@adietrich所提到的,我倾向于相信他们希望我展示核心API的知识(他们甚至要求编写函数,而不是编写算法).
我相信保证工作安全的最佳方法是提供尽可能多的解决方案,包括:1.使用Collections.indexOfSubList()方法实现,以表明我知道核心集合API.2.使用强力方法实施,但提供更优雅的解决方案.3.使用搜索算法实现,例如Boyer-Moore.4.使用System.arraycopy()和Arrays.equal()的组合实现.然而,它不是性能方面的最佳解决方案,它将显示我对标准数组例程的了解.
谢谢大家的答案!
更新结束.
这是我写的:
实际计划:
package com.example.common.utils;
/**
* This class contains functions for array manipulations.
*
* @author Roman
*
*/
public class ArrayUtils {
/**
* Finds a sub array in a large array
*
* @param largeArray
* @param subArray
* @return index of sub array
*/
public int findArray(int[] largeArray, int[] subArray) {
/* If any of the arrays is empty then not found */
if …Run Code Online (Sandbox Code Playgroud)