java - 将原始双数组转换为集合

时间:2016-03-06 09:11:26

标签: java

我希望有一系列花车(双打)&整数如下 -

    public static void getMaxArrVal(double[] myArr) {           

        myCol = /* Code to convert myarr to collection should come here */
        System.out.println(Collections.min(myCol ));
        System.out.println(Collections.max(myCol ));
    }
}

getMaxArrVal(myArr);

然后我有这个函数返回max&分钟

Double

我在将原始数据类型转换为集合时遇到了问题。我尝试将其转换为双列表,尝试将myArr转换为char / String以检查一些事情,但没有任何明显的效果。

我一直在看原始数据类型的编译错误。我确实试过<?mso-application progid="Excel.Sheet"?> <Workbook> <DocumentProperties> ... </DocumentProperties> <OfficeDocumentSettings> ... </OfficeDocumentSettings> <ExcelWorkbook> ... </ExcelWorkbook> <Styles> ... </Styles> <Worksheet ss:Name="TDSheet"> <Table> <Column> ... </Column> ... <Column> ... </Column> <Row> ... </Row> <!-- HIER SHOULD APPEAR MY NEW ROW --> </Table> </Worksheet> </Workbook> 但没有运气。

我怎么可能将数组转换为集合&amp;计算这一个的最小值/最大值。我很感激她的帮助。

6 个答案:

答案 0 :(得分:2)

Guava带来了不错的解决方案

Lists.newArrayList(double[])

答案 1 :(得分:2)

这适用于Java 8:

Arrays.stream(myArr).boxed().collect(Collectors.toCollection(ArrayList::new));

当然,可以使用任何Collection代替ArrayList。我在这里的代码实际上可以简化为Collectors.toList()

此外,正如@nukie's answer中所述,DoubleStream有自己的min()max()方法,导致转换无效。仅使用使用Arrays.stream(myArr)创建的两个流并调用这些方法。

答案 2 :(得分:1)

如果你在java8上运行这段代码,你可以试试lambdas:

Arrays.stream(myArr).max();

Arrays.stream(myArr).max();

答案 3 :(得分:1)

double[] primitives = new double[] { 1.0, 2.0, 3.0};
List<Double> objects = new ArrayList<>();
for(double num : primitives) {
    objects.add(num);
}

答案 4 :(得分:1)

public static void main(String[] args) throws Exception {

    Double [] myArr = {0., 0., 95., 9.5, 19., 610.5, 1217., 5.14, 4038.66, 10.23,  7961., 828., 199858., 37325.3};      

    Double min = Arrays.stream(myArr).min(Comparator.<Double>naturalOrder()).get();
    Double max = Arrays.stream(myArr).max(Comparator.<Double>naturalOrder()).get();

    System.out.println(min);
    System.out.println(max);
}

如果您不需要收集任何其他内容,除了查找maxmin,请从数组创建流。在这种情况下,您根本不需要创建单独的集合。

答案 5 :(得分:1)

使用Arrays.sort将按升序对数组进行排序。因此,您知道min将是数组的第一个元素myArr [0],并且您的max将是数组myArr [myArr.length-1]中的最后一个元素。

double[] myArr = {0, 0, 95, 9.5, 19, 610.5, 1217, 5.14, 4038.66, 10.23, 7961,  828, 199858, 37325.3};
Arrays.sort(myArr);
System.out.println(myArr[0]);
System.out.println(myArr[myArr.length-1]);

以下将导致

0.0 < - min

199858.0&lt; - max