Example usage for java.util LinkedHashSet size

List of usage examples for java.util LinkedHashSet size

Introduction

In this page you can find the example usage for java.util LinkedHashSet size.

Prototype

int size();

Source Link

Document

Returns the number of elements in this set (its cardinality).

Usage

From source file:Main.java

public static void main(String[] args) {
    LinkedHashSet<Integer> lhashSet = new LinkedHashSet<Integer>();

    System.out.println("Size of LinkedHashSet : " + lhashSet.size());
    lhashSet.add(new Integer("1"));
    lhashSet.add(new Integer("2"));
    lhashSet.add(new Integer("3"));

    System.out.println(lhashSet.size());

    lhashSet.remove(new Integer("1"));

    System.out.println(lhashSet.size());
}

From source file:nl.systemsgenetics.functionenrichmentoftransqtls.CorrelateSumChi2ToPathways.java

/**
 * @param args the command line arguments
 *///from   w  ww.  j av a2 s.  c  o  m
public static void main(String[] args) throws IOException {

    final File pathwayMatrixFile = new File(args[0]);
    final File significantTermsFile = new File(args[1]);
    final File sumChi2MatrixFile = new File(args[2]);
    final File transQtlEnrichmentsMatrixFile = new File(args[3]);

    System.out.println("Pathway file: " + pathwayMatrixFile.getPath());
    System.out.println("Pathway significant terms file: " + significantTermsFile.getPath());
    System.out.println("SumChi2 file: " + sumChi2MatrixFile.getPath());
    System.out.println("Output file: " + transQtlEnrichmentsMatrixFile.getPath());

    LinkedHashSet<String> significantTerms = loadSignificantTerms(significantTermsFile);

    DoubleMatrixDataset<String, String> pathwayMatrix = DoubleMatrixDataset
            .loadDoubleData(pathwayMatrixFile.getPath());
    DoubleMatrixDataset<String, String> sumChi2Matrix = DoubleMatrixDataset
            .loadDoubleData(sumChi2MatrixFile.getPath());

    LinkedHashSet<String> genesInBoth = new LinkedHashSet<String>();

    for (String gene : pathwayMatrix.getHashRows().keySet()) {
        if (sumChi2Matrix.containsRow(gene)) {
            genesInBoth.add(gene);
        }
    }

    pathwayMatrix = pathwayMatrix.viewColSelection(significantTerms);

    pathwayMatrix = pathwayMatrix.viewRowSelection(genesInBoth);
    DoubleMatrixDataset<String, String> transQtlEnrichmentsMatrix = new DoubleMatrixDataset<String, String>(
            pathwayMatrix.getHashCols(), sumChi2Matrix.getHashCols());
    sumChi2Matrix = sumChi2Matrix.viewRowSelection(genesInBoth);

    System.out.println("Genes in both datasets: " + genesInBoth.size());

    System.out.println("Pathways to test: " + pathwayMatrix.columns());

    final SimpleRegression regression = new SimpleRegression();
    final DoubleRandomEngine randomEngine = new DRand();
    StudentT tDistColt = new StudentT(sumChi2Matrix.rows() / 2 - 2, randomEngine);

    for (String trait : sumChi2Matrix.getColObjects()) {

        System.out.println("Trait: " + trait);

        DoubleMatrix1D traitSumChi2 = sumChi2Matrix.getCol(trait);

        for (String pathway : pathwayMatrix.getColObjects()) {

            DoubleMatrix1D pathwayScores = pathwayMatrix.getCol(pathway);

            regression.clear();

            for (int i = 0; i < traitSumChi2.size(); ++i) {

                //System.out.println(traitSumChi2.get(i) + " & " + pathwayScores.get(i));

                regression.addData(traitSumChi2.get(i), pathwayScores.get(i));

            }

            double r = regression.getR();

            //System.out.println(trait + " " + pathway + " " + r);

            double t = r / (Math.sqrt((1 - r * r) / (double) (traitSumChi2.size() / 2 - 2)));
            double pValue;
            double zScore;
            if (t < 0) {
                pValue = tDistColt.cdf(t);
                if (pValue < 2.0E-323) {
                    pValue = 2.0E-323;
                }
                zScore = Probability.normalInverse(pValue);
            } else {
                pValue = tDistColt.cdf(-t);
                if (pValue < 2.0E-323) {
                    pValue = 2.0E-323;
                }
                zScore = -Probability.normalInverse(pValue);
            }
            pValue *= 2;

            transQtlEnrichmentsMatrix.setElement(pathway, trait, zScore);

        }

    }

    transQtlEnrichmentsMatrix.save(transQtlEnrichmentsMatrixFile);

}

From source file:nl.systemsgenetics.genenetworkbackend.hpo.TestDiseaseGenePerformance.java

/**
 * @param args the command line arguments
 * @throws java.lang.Exception//from   w  w w  .  j a v  a  2 s . c o m
 */
public static void main(String[] args) throws Exception {

    final File diseaseGeneHpoFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\HPO\\135\\ALL_SOURCES_ALL_FREQUENCIES_diseases_to_genes_to_phenotypes.txt");
    final File ncbiToEnsgMapFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\ensgNcbiId.txt");
    final File hgncToEnsgMapFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\ensgHgnc.txt");
    final File ensgSymbolMappingFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\ensgHgnc.txt");
    final File predictionMatrixFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\predictions\\hpo_predictions_zscores.txt.gz");
    final File predictionMatrixCorrelationFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\predictions\\hpo_predictions_pathwayCorrelation.txt");
    final File significantTermsFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\predictions\\hpo_predictions_bonSigTerms.txt");
    final double correctedPCutoff = 0.05;
    final File hpoOboFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\HPO\\135\\hp.obo");
    final File hpoPredictionInfoFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\predictions\\hpo_predictions_auc_bonferroni.txt");
    final File hposToExcludeFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\hpoToExclude.txt");
    final File skewnessFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\predictions\\skewnessSummary.txt");
    final boolean randomize = true;
    final File annotationMatrixFile = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\PathwayMatrix\\ALL_SOURCES_ALL_FREQUENCIES_phenotype_to_genes.txt_matrix.txt.gz");
    final File backgroundForRandomize = new File(
            "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\Data31995Genes05-12-2017\\PCA_01_02_2018\\PathwayMatrix\\Ensembl2Reactome_All_Levels.txt_genesInPathways.txt");
    //final File backgroundForRandomize = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\expressedReactomeGenes.txt");
    final boolean randomizeCustomBackground = true;

    Map<String, String> ensgSymbolMapping = loadEnsgToHgnc(ensgSymbolMappingFile);

    final File outputFile;
    final ArrayList<String> backgroundGenes;
    if (randomize) {

        if (randomizeCustomBackground) {
            System.err.println("First need to fix so ranking list contains all genes in background list");
            return;
            //            backgroundGenes = loadBackgroundGenes(backgroundForRandomize);
            //            outputFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\hpoDiseaseBenchmarkRandomizedCustomBackground.txt");
        } else {
            backgroundGenes = null;
            outputFile = new File(
                    "C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\hpoDiseaseBenchmarkRandomizedExtraNorm.txt");
        }

    } else {
        backgroundGenes = null;
        outputFile = new File("C:\\UMCG\\Genetica\\Projects\\GeneNetwork\\hpoDiseaseBenchmarkExtraNorm.txt");
    }

    final HashMap<String, ArrayList<String>> ncbiToEnsgMap = loadNcbiToEnsgMap(ncbiToEnsgMapFile);
    final HashMap<String, ArrayList<String>> hgncToEnsgMap = loadHgncToEnsgMap(hgncToEnsgMapFile);
    final HashSet<String> exludedHpo = loadHpoExclude(hposToExcludeFile);

    final SkewnessInfo skewnessInfo = new SkewnessInfo(skewnessFile);

    LinkedHashSet<String> significantTerms = loadSignificantTerms(significantTermsFile);

    DoubleMatrixDataset<String, String> predictionMatrix = DoubleMatrixDataset
            .loadDoubleData(predictionMatrixFile.getAbsolutePath());
    DoubleMatrixDataset<String, String> predictionMatrixSignificant = predictionMatrix
            .viewColSelection(significantTerms);

    DoubleMatrixDataset<String, String> predictionMatrixSignificantCorrelationMatrix = DoubleMatrixDataset
            .loadDoubleData(predictionMatrixCorrelationFile.getAbsolutePath());

    DiseaseGeneHpoData diseaseGeneHpoData = new DiseaseGeneHpoData(diseaseGeneHpoFile, ncbiToEnsgMap,
            hgncToEnsgMap, exludedHpo, new HashSet(predictionMatrix.getHashRows().keySet()), "OMIM");

    //NOTE if one would use a differnt background this needs to be updated
    HashSet<String> diseaseGenes = new HashSet<>(diseaseGeneHpoData.getDiseaseGenes());

    if (randomize) {
        diseaseGeneHpoData = diseaseGeneHpoData.getPermutation(1, backgroundGenes);
    }

    for (String gene : diseaseGenes) {
        if (!predictionMatrixSignificant.containsRow(gene)) {
            throw new Exception("Error: " + gene);
        }
    }

    int[] mapGeneIndexToDiseaseGeneIndex = new int[predictionMatrix.rows()];
    ArrayList<String> predictedGenes = predictionMatrix.getRowObjects();

    int g2 = 0;
    for (int g = 0; g < predictedGenes.size(); ++g) {
        mapGeneIndexToDiseaseGeneIndex[g] = diseaseGenes.contains(predictedGenes.get(g)) ? g2++ : -1;
    }

    DoubleMatrixDataset<String, String> annotationnMatrix = DoubleMatrixDataset
            .loadDoubleData(annotationMatrixFile.getAbsolutePath());
    DoubleMatrixDataset<String, String> annotationMatrixSignificant = annotationnMatrix
            .viewColSelection(significantTerms);

    HashMap<String, MeanSd> hpoMeanSds = calculatePathayMeansOfAnnotatedGenes(predictionMatrixSignificant,
            annotationMatrixSignificant);

    Map<String, PredictionInfo> predictionInfo = HpoFinder.loadPredictionInfo(hpoPredictionInfoFile);

    Ontology hpoOntology = HpoFinder.loadHpoOntology(hpoOboFile);

    HpoFinder hpoFinder = new HpoFinder(hpoOntology, predictionInfo);

    final int totalGenes = predictionMatrixSignificant.rows();
    final int totalDiseaseGenes = diseaseGenes.size();
    final double[] geneScores = new double[totalGenes];
    final double[] geneScoresDiseaseGenes = new double[totalDiseaseGenes];
    final NaturalRanking naturalRanking = new NaturalRanking(NaNStrategy.FAILED, TiesStrategy.MAXIMUM);

    CSVWriter writer = new CSVWriter(new FileWriter(outputFile), '\t', '\0', '\0', "\n");

    String[] outputLine = new String[16];
    int c = 0;
    outputLine[c++] = "Disease";
    outputLine[c++] = "Gene";
    outputLine[c++] = "Hgnc";
    outputLine[c++] = "Rank";
    outputLine[c++] = "RankAmongDiseaseGenes";
    outputLine[c++] = "Z-score";
    outputLine[c++] = "HPO_skewness";
    outputLine[c++] = "Other_mean_skewness";
    outputLine[c++] = "Other_max_skewness";
    outputLine[c++] = "HPO_phenotypic_match_score";
    outputLine[c++] = "HPO_count";
    outputLine[c++] = "HPO_sum_auc";
    outputLine[c++] = "HPO_mean_auc";
    outputLine[c++] = "HPO_median_auc";
    outputLine[c++] = "HPO_terms";
    outputLine[c++] = "HPO_terms_match_score";
    writer.writeNext(outputLine);

    Random random = new Random(1);

    Mean meanCalculator = new Mean();
    Median medianCalculator = new Median();

    for (DiseaseGeneHpoData.DiseaseGene diseaseGene : diseaseGeneHpoData.getDiseaseGeneHpos()) {

        String gene = diseaseGene.getGene();
        String disease = diseaseGene.getDisease();

        if (!predictionMatrixSignificant.containsRow(gene)) {
            continue;
        }

        Set<String> geneHpos = diseaseGeneHpoData.getDiseaseEnsgHpos(diseaseGene);

        LinkedHashSet<String> geneHposPredictable = new LinkedHashSet<>();

        for (String hpo : geneHpos) {
            geneHposPredictable
                    .addAll(hpoFinder.getTermsToNames(hpoFinder.getPredictableTerms(hpo, correctedPCutoff)));
        }

        if (geneHposPredictable.isEmpty()) {
            continue;
        }

        //         if(geneHposPredictable.size() > 1){
        //            String hpoSelected = geneHposPredictable.toArray(new String[geneHposPredictable.size()])[random.nextInt(geneHposPredictable.size())];
        //            geneHposPredictable = new LinkedHashSet<>(1);
        //            geneHposPredictable.add(hpoSelected);
        //         }
        DoubleMatrixDataset<String, String> predictionCaseTerms = predictionMatrixSignificant
                .viewColSelection(geneHposPredictable);
        DoubleMatrix2D predictionCaseTermsMatrix = predictionCaseTerms.getMatrix();

        double denominator = Math.sqrt(geneHposPredictable.size());

        for (int g = 0; g < totalGenes; ++g) {
            geneScores[g] = predictionCaseTermsMatrix.viewRow(g).zSum() / denominator;
            if (Double.isNaN(geneScores[g])) {
                geneScores[g] = 0;
            }

            g2 = mapGeneIndexToDiseaseGeneIndex[g];
            if (g2 >= 0) {
                geneScoresDiseaseGenes[g2] = geneScores[g];
            }

        }

        double[] geneRanks = naturalRanking.rank(geneScores);
        int diseaseGeneIndex = predictionMatrixSignificant.getRowIndex(gene);

        double[] geneRanksDiseaseGenes = naturalRanking.rank(geneScoresDiseaseGenes);
        int diseaseGeneIndexInDiseaseGenesOnly = mapGeneIndexToDiseaseGeneIndex[diseaseGeneIndex];

        double zscore = geneScores[diseaseGeneIndex];
        double rank = (totalGenes - geneRanks[diseaseGeneIndex]) + 1;
        double rankAmongDiseaseGenes = (totalDiseaseGenes
                - geneRanksDiseaseGenes[diseaseGeneIndexInDiseaseGenesOnly]) + 1;

        double hpoPhenotypicMatchScore = 0;
        StringBuilder individualMatchScore = new StringBuilder();
        boolean notFirst = false;
        int usedHpos = 0;

        double[] aucs = new double[geneHposPredictable.size()];
        double sumAucs = 0;

        int i = 0;
        for (String hpo : geneHposPredictable) {

            usedHpos++;

            MeanSd hpoMeanSd = hpoMeanSds.get(hpo);

            double hpoPredictionZ = predictionMatrixSignificant.getElement(gene, hpo);

            double hpoPredictionOutlierScore = ((hpoPredictionZ - hpoMeanSd.getMean()) / hpoMeanSd.getSd());

            if (notFirst) {
                individualMatchScore.append(';');
            }
            notFirst = true;

            individualMatchScore.append(hpoPredictionOutlierScore);

            hpoPhenotypicMatchScore += hpoPredictionOutlierScore;

            aucs[i++] = predictionInfo.get(hpo).getAuc();
            sumAucs += predictionInfo.get(hpo).getAuc();

        }

        double meanAuc = meanCalculator.evaluate(aucs);
        double medianAuc = medianCalculator.evaluate(aucs);

        if (usedHpos == 0) {
            hpoPhenotypicMatchScore = Double.NaN;
        } else {
            hpoPhenotypicMatchScore = hpoPhenotypicMatchScore / usedHpos;
        }

        String symbol = ensgSymbolMapping.get(gene);
        if (symbol == null) {
            symbol = "";
        }

        c = 0;
        outputLine[c++] = disease;
        outputLine[c++] = gene;
        outputLine[c++] = symbol;
        outputLine[c++] = String.valueOf(rank);
        outputLine[c++] = String.valueOf(rankAmongDiseaseGenes);
        outputLine[c++] = String.valueOf(zscore);
        outputLine[c++] = String.valueOf(skewnessInfo.getHpoSkewness(gene));
        outputLine[c++] = String.valueOf(skewnessInfo.getMeanSkewnessExHpo(gene));
        outputLine[c++] = String.valueOf(skewnessInfo.getMaxSkewnessExHpo(gene));
        outputLine[c++] = String.valueOf(hpoPhenotypicMatchScore);
        outputLine[c++] = String.valueOf(geneHposPredictable.size());
        outputLine[c++] = String.valueOf(sumAucs);
        outputLine[c++] = String.valueOf(meanAuc);
        outputLine[c++] = String.valueOf(medianAuc);
        outputLine[c++] = String.join(";", geneHposPredictable);
        outputLine[c++] = individualMatchScore.toString();
        writer.writeNext(outputLine);

    }

    writer.close();

}

From source file:Main.java

public static String convertSetToString(LinkedHashSet<String> set) {
    int length = set.size();
    StringBuilder sb = new StringBuilder();
    for (String item : set) {
        length--;/*from  www  .ja  va 2s  .c  o  m*/
        sb.append(item);
        if (length != 0) {
            sb.append(",");
        }
    }
    return sb.toString();
}

From source file:com.datatorrent.stram.api.IotDev.java

public static URLClassLoader loadDependencies(LinkedHashSet<URL> launchDependencies) {
    URLClassLoader cl = URLClassLoader
            .newInstance(launchDependencies.toArray(new URL[launchDependencies.size()]));
    Thread.currentThread().setContextClassLoader(cl);
    StringCodecs.check();/*w w  w .java  2  s. com*/
    return cl;
}

From source file:io.parallec.core.util.PcStringUtils.java

/**
 * Get the aggregated result human readable string for easy display.
 * /*from   w w w.j  a v a  2s.  c  o m*/
 *
 * @param aggregateResultMap the aggregate result map
 * @return the aggregated result human
 */
public static String getAggregatedResultHuman(Map<String, LinkedHashSet<String>> aggregateResultMap) {

    StringBuilder res = new StringBuilder();

    for (Entry<String, LinkedHashSet<String>> entry : aggregateResultMap.entrySet()) {
        LinkedHashSet<String> valueSet = entry.getValue();
        res.append("[" + entry.getKey() + " COUNT: " + valueSet.size() + " ]:\n");
        for (String str : valueSet) {
            res.append("\t" + str + "\n");
        }
        res.append("###################################\n\n");
    }

    return res.toString();

}

From source file:com.zxy.commons.lang.utils.StringsUtils.java

/**
 * List??//w w w . j ava 2  s.  c  om
 * 
 * @param arrList ?
 * @return ????
 */
public static List<String> removeDuplicate(List<String> arrList) {
    if (arrList == null || arrList.isEmpty()) {
        return new ArrayList<String>();
    }
    LinkedHashSet<String> hSet = new LinkedHashSet<String>(arrList);
    List<String> tmp = new ArrayList<String>(hSet.size());
    tmp.addAll(hSet);
    return tmp;
}

From source file:com.vaadin.sass.testcases.scss.W3ConformanceTests.java

protected static Collection<URI> scrapeIndexForTests(String url, String regexp, int maxTests,
        Collection<URI> excludeUrls) throws Exception {

    URI baseUrl = new URI(url);
    Document doc = Jsoup.connect(url).timeout(10000).get();
    Elements elems = doc.select(String.format("a[href~=%s]", regexp));
    LinkedHashSet<URI> tests = new LinkedHashSet<URI>();
    for (Element e : elems) {
        URI testUrl = new URI(e.attr("href"));
        if (!testUrl.isAbsolute()) {
            testUrl = baseUrl.resolve(testUrl);
        }/*from  w w w  .  j  a  va2 s  .  c  o m*/
        if (tests.size() < maxTests) {
            if (!excludeUrls.contains(testUrl)) {
                tests.add(testUrl);
            }
        } else {
            break;
        }
    }

    return tests;
}

From source file:com.ery.ertc.estorm.util.DNS.java

/**
 * Returns all the IPs associated with the provided interface, if any, in textual form.
 * /*  w  ww .ja  v a  2s  .co  m*/
 * @param strInterface
 *            The name of the network interface or subinterface to query (eg eth0 or eth0:0) or the string "default"
 * @param returnSubinterfaces
 *            Whether to return IPs associated with subinterfaces of the given interface
 * @return A string vector of all the IPs associated with the provided interface
 * @throws UnknownHostException
 *             If an UnknownHostException is encountered in querying the default interface or the given interface can not be found
 * 
 */
public static String[] getIPs(String strInterface, boolean returnSubinterfaces) throws UnknownHostException {
    if ("default".equals(strInterface)) {
        return new String[] { InetAddress.getLocalHost().getHostAddress() };
    }
    NetworkInterface netIf;
    try {
        netIf = NetworkInterface.getByName(strInterface);
        if (netIf == null) {
            netIf = getSubinterface(strInterface);
            if (netIf == null) {
                throw new UnknownHostException("Unknown interface " + strInterface);
            }
        }
    } catch (SocketException e) {
        LOG.warn("Unable to get IP for interface " + strInterface, e);
        return new String[] { InetAddress.getLocalHost().getHostAddress() };
    }

    // NB: Using a LinkedHashSet to preserve the order for callers
    // that depend on a particular element being 1st in the array.
    // For example, getDefaultIP always returns the first element.
    LinkedHashSet<InetAddress> allAddrs = new LinkedHashSet<InetAddress>();
    allAddrs.addAll(Collections.list(netIf.getInetAddresses()));
    if (!returnSubinterfaces) {
        allAddrs.removeAll(getSubinterfaceInetAddrs(netIf));
    }

    String ips[] = new String[allAddrs.size()];
    int i = 0;
    for (InetAddress addr : allAddrs) {
        ips[i++] = addr.getHostAddress();
    }
    return ips;
}

From source file:com.buaa.cfs.net.DNS.java

/**
 * Returns all the IPs associated with the provided interface, if any, in textual form.
 *
 * @param strInterface        The name of the network interface or sub-interface to query (eg eth0 or eth0:0) or the
 *                            string "default"
 * @param returnSubinterfaces Whether to return IPs associated with subinterfaces of the given interface
 *
 * @return A string vector of all the IPs associated with the provided interface. The local host IP is returned if
 * the interface name "default" is specified or there is an I/O error looking for the given interface.
 *
 * @throws UnknownHostException If the given interface is invalid
 *//*from  w w  w .j a  v a2s  .c o m*/
public static String[] getIPs(String strInterface, boolean returnSubinterfaces) throws UnknownHostException {
    if ("default".equals(strInterface)) {
        return new String[] { cachedHostAddress };
    }
    NetworkInterface netIf;
    try {
        netIf = NetworkInterface.getByName(strInterface);
        if (netIf == null) {
            netIf = getSubinterface(strInterface);
        }
    } catch (SocketException e) {
        LOG.warn("I/O error finding interface " + strInterface + ": " + e.getMessage());
        return new String[] { cachedHostAddress };
    }
    if (netIf == null) {
        throw new UnknownHostException("No such interface " + strInterface);
    }

    // NB: Using a LinkedHashSet to preserve the order for callers
    // that depend on a particular element being 1st in the array.
    // For example, getDefaultIP always returns the first element.
    LinkedHashSet<InetAddress> allAddrs = new LinkedHashSet<InetAddress>();
    allAddrs.addAll(Collections.list(netIf.getInetAddresses()));
    if (!returnSubinterfaces) {
        allAddrs.removeAll(getSubinterfaceInetAddrs(netIf));
    }

    String ips[] = new String[allAddrs.size()];
    int i = 0;
    for (InetAddress addr : allAddrs) {
        ips[i++] = addr.getHostAddress();
    }
    return ips;
}