在工作中,遇到过这样一个问题:在获取到的一个数组中判断是否包含指定的元素。在面对这个问题的时候,我首先想到的解决方案就是将数组转换为List数组,通过List接口的contains()方法去判断是否包含该元素,但是,这样的话会多多少少影响性能,繁琐的代码也会造成BUG出现的几率。然后我查了一下API文档,发现一个很好的封装好的API方法,可以直接解决这个问题,下面就是本次小技能get的一些见解。
第一种方法:通过将数组转换为List集合,然后通过调用List集合的contains()方法来判断指定元素是否包含在List集合中,如果包含就说明数组中也包含该元素,否则说明数组中不包含该元素。代码截图如下:
通过图中所展示代码可以看出,数字5存在数组中,因而可以通过numberList.contains(num)判断而进入if语句中,如果数组中不包含数字5,则程序将进入else语句中,这是通过转换为List集合的方法判断数组中是否包含一个指定元素的方法。
第二种方法:通过Set集合也能判断数组中是否包含指定元素。只需将List中的声明语句修改为:Set set = new HashSet(),再补充一点代码就可以实现Set集合判断数组包含元素的功能了,此种方法同第一种相差不大,此处就不多做记录了。
第三种方法:使用循环进行判断。通过指定元素和数组内每一个元素的比较,来获取其比较结果,由结果判断其释放后包含该元素。
通过上图所展示代码可以看出,如果数组中不包含该元素,则控制台打印的会是false,只有在数组包含该元素的情况下,控制台才会打印true。这是通过循环遍历数组的方式来判断一个数组中是否包含指定元素的方法。
第四种方法:使用Arrays.binarySearch()方法,但此方法只适用于数组中元素有序排列,关于数组的无序排列等等,我还不是太理解,之后会继续探索无序数组的内容以及其含义。
Arrays.binarySearch()方法就是俗话说的二分搜索法,这个方法我还没有进行较深的探索,又是一个需要我get的小技巧,特别的记录一下,每一个小方法的积累都是我前进的动力和提升技术的保障。
第五种方法:使用ArrayUtils.contains()方法,也是我今天特别特别需要记录的一种方法,因为在工作中,我就是直接调用的这个封装好的API方法。废话不多说,先上图再搞事情:
通过上图所展示代码可以看到,使用这个封装的API需要导入 org.apache.commons.lang.ArrayUtils 这个包,这个第三方jar包是对java.lang包的拓展和补充,是非常实用的一个包。此方法可以极大的减少代码量,尽可能的降低了BUG的出现几率,也提高了代码的可阅读性,此种方法是我认为这几种方法中更让人喜爱的解决方案。
点点滴滴的进步,是不知不觉中的成长。