簡體   English   中英

Java:如何獲得文件中的最高和最低價格

[英]Java: how to get highest & lowest vale in a file

問題解決了

我想從文件中找到最高和最低值。 我已經將文件中的數字從String轉換為double。 如果我想使用Get方法查找最高和最低金額怎么辦?

編輯:我完全弄亂了原來的答案,因為我沒有意識到使用標准的Collections()類方法可以按字典順序比較Strings

因此,使用Collections()做到這一點的最佳方法是創建一個自定義的Comparator

Comparator<String> sort = (o1, o2) -> Double.valueOf(o1).compareTo(Double.valueOf(o2));
String max = Collections.max(numList, sort);
String min = Collections.min(numList, sort);

在線嘗試!

您應該在從文件讀取數據時將數據放入arraylist。 然后開始使用merge或quick對數字進行排序。

我正在使用inbuild Collections.sort()方法。

package com.collections.java.basic;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SortingDataWhileReading {
    public static void main(String[] args) throws IOException {
          BufferedReader br = new BufferedReader(new FileReader("E:\\BUILD\\numbers.txt"));//this file contains several double data.
            List<Double> numbers = new ArrayList<Double>();
            String line = null;

             //String line = br.readLine();

             while ((line = br.readLine()) != null) {
                 String []strNumbers = line.split(" ");
                 for(String strNumber : strNumbers){
                     numbers.add((double) Double.parseDouble(strNumber));
                 }

             }   

             br.close();

             Collections.sort(numbers);

             System.out.println("minimum value" + numbers.get(0));
             System.out.println("minimum value" + numbers.get(numbers.size() - 1));

             System.out.println(numbers);
    }
}

這應該可以解決您的問題。

Double higher = 0;
Double lower = 0;
for (String item:numList)
        { 
            Double result = Double.parseDouble(item);
            if (result>higher) { higher = result;}
            if (result<lower) { lower = result;}
            //Calculate the total sales for each week
            total += result;
        }
public static double getMin(List<String> list) {
    double min = Double.MAX_VALUE;
    for (String s : list) {
        double d = Double.valueOf(s);
        min = min > d ? d : min;
    }
    return min;
}

public static double getMax(List<String> list) {
    double max = Double.MIN_VALUE;

    for (String s : list) {
        double d = Double.valueOf(s);
        max = max < d ? d : max;

    }
    return max;
}

Java8示例:

public static double getMinJ8(List<String> list) {
    return list.stream().map(s -> Double.valueOf(s)).min((d1, d2) -> d1.compareTo(d2)).get();
}
public static double getMaxJ8(List<String> list) {
    return list.stream().map(s -> Double.valueOf(s)).max((d1, d2) -> d1.compareTo(d2)).get();
}

將所有值存儲在樹集中,以便對所有元素進行排序。 現在使用第一個最后一個

樣例代碼

    TreeSet s=new TreeSet();
    //add elements to the set
    s.add(100);
    s.add(200);
    s.add(1);
   // use first() method to get the lowest
    System.out.println(s.first());
   //use last method to get the highest
    System.out.println(s.last());

輸出 1

200

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM