Here you can find the source of medianAbsVal(List vals)
public static double medianAbsVal(List vals)
//package com.java2s; /*//www .j a v a 2 s . c o m ** Copyright (C) 2003-2018 Institute for Systems Biology ** Seattle, Washington, USA. ** ** This library is free software; you can redistribute it and/or ** modify it under the terms of the GNU Lesser General Public ** License as published by the Free Software Foundation; either ** version 2.1 of the License, or (at your option) any later version. ** ** This library is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** Lesser General Public License for more details. ** ** You should have received a copy of the GNU Lesser General Public ** License along with this library; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.util.Collections; import java.util.List; import java.util.ArrayList; public class Main { /*************************************************************************** ** ** Median absolute value */ public static double medianAbsVal(List vals) { if (vals.isEmpty()) { return (Double.NaN); } int num = vals.size(); ArrayList sorted = new ArrayList(); for (int i = 0; i < num; i++) { Double val0bj = (Double) vals.get(i); if (val0bj.isNaN()) { return (Double.NaN); } sorted.add(new Double(Math.abs(val0bj.doubleValue()))); } Collections.sort(sorted); int lindex = num / 2; if ((num % 2) == 0) { Double lower = (Double) sorted.get(lindex - 1); Double upper = (Double) sorted.get(lindex); return ((lower.doubleValue() + upper.doubleValue()) / 2.0); } else { Double median = (Double) sorted.get(lindex); return (median.doubleValue()); } } }