2014-12-08 68 views
2

我有一个ArrayList。该数组可以包含4个项目或4000个项目。我正在寻找中间4件物品。我的猜测是得到size/2 -2 +2。什么是最有效的方式来做到这一点,你如何处理奇数?如何获得Arraylist的中心4()

if (comparables.size() > 4) { 
      int size = comparableVehicles.size(); 
      System.out.println("size " + size); 
      int middle = size/2; 
      System.out.println("middle " + middle); 
      int bottom = middle - 2; 
      System.out.println("bottom " + bottom); 

      this.comparables = comparables.subList(bottom, bottom + 4); 
} 

回答

1

您正在使用的sublist调用可能是最有效的方法。关于奇怪大小的清单 - 按照定义,它们没有“中间四个要素”。无论你如何采取四个要素,它们将永远是靠近一方或另一方的一个要素。你可以做的最好的事情是做出良心决定,采取哪一方面,并​​坚持下去。在你的代码片段中,使用整数除法事实决定让“中间”更接近列表的开始。 TL; DR - 你的代码很好。

+0

好,太好了,谢谢。 – 2014-12-08 07:47:46

相关问题