Skip to content

Merge Statistics exchange class branch with main #20

Merged
merged 2 commits into from
Mar 27, 2026
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions millions/src/main/java/no/ntnu/gruppe53/Exchange.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,47 @@ public void advance() {
}

stock.addNewSalesPrice(changedPrice);
}
}

/**
* Lists the given amount of stocks sorted by highest increase in sales price since last week.
* @param entries amount of stocks to be shown in list
* @return a descending list of stocks with the highest price increase since last week
* @throws IllegalArgumentException if number of entries in list is negative
*/
public List<Stock> getGainers(int entries) {
if (entries < 0) {
throw new IllegalArgumentException("Amount of entries in list cannot be negative.");
}

return stockMap.values().stream()
.sorted(Comparator.comparing(Stock::getLatestPriceChange).reversed())
.filter(stock -> stock.getLatestPriceChange().compareTo(BigDecimal.ZERO) > 0)
.limit(entries)

.collect(Collectors.toList());
}

/**
* Lists the given amount of stocks sorted by the stocks with the lowest price increase (or
* highest price decrease)
* @param entries amount of stocks to be shown in the list
* @return a descending list of stocks with the highest price decrease or
* lowest price increase
* @throws IllegalArgumentException if number of entries in list is negative
*/
public List<Stock> getLosers(int entries) {
if (entries < 0) {
throw new IllegalArgumentException("Amount of entries in list cannot be negative.");
}

return stockMap.values().stream()
.sorted(Comparator.comparing(Stock::getLatestPriceChange))
.filter(stock -> stock.getLatestPriceChange().compareTo(BigDecimal.ZERO) < 0)
.limit(entries)

.collect(Collectors.toList());
}


Expand Down