gpt4 book ai didi

Java Map getValue 不可能

转载 作者:行者123 更新时间:2023-12-04 09:15:04 27 4
gpt4 key购买 nike

我得到了一个代码,它从一个名为频率的列表中获取所有最小值。然后它将最小值与总值的百分比放入一个字符串中。要计算百分比,我想调用 minEntryes.getValue()(minEntryes 是 Map ,其中包含所有最小值),但它不起作用。我的代码:

    StringBuilder wordFrequencies = new StringBuilder();

URL url = new URL(urlString);//urlString is a String parameter of the function

AtomicInteger elementCount = new AtomicInteger();//total count of all the different characters

Map<String, Integer> frequencies = new TreeMap<>();//where all the frequencies of the characters will be stored
//example: e=10, r=4, (=3 g=4...

//read and count all the characters, works fine
try (Stream<String> stream = new BufferedReader(
new InputStreamReader(url.openStream(), StandardCharsets.UTF_8)).lines()) {

stream
.flatMapToInt(CharSequence::chars)
.filter(c -> !Character.isWhitespace(c))
.mapToObj(Character::toString)
.map(String::toLowerCase)
.forEach(s -> {
frequencies.merge(s, 1, Integer::sum);
elementCount.getAndIncrement();
});
} catch (IOException e) {
return "IOException:\n" + e.getMessage();
}

//counting the letters which are present the least amount of times
//in the example from above those are
//r=4, g=4
try (Stream<Map.Entry<String, Integer>> stream = frequencies.entrySet().stream()) {
Map<String, Integer> minEntryes = new TreeMap<>();
stream
.collect(Collectors.groupingBy(Map.Entry::getValue))
.entrySet()
.stream()
.min(Map.Entry.comparingByKey())
.map(Map.Entry::getValue)
.ifPresent(key -> {
IntStream i = IntStream.rangeClosed(0, key.size());
i.forEach(s -> minEntryes.put(key.get(s).getKey(), key.get(s).getValue()));
});

wordFrequencies.append("\n\nSeltenste Zeichen: (").append(100 / elementCount.floatValue() * minEntryes.getValue().append("%)"));
//this does not work
minEntryes.forEach((key, value) -> wordFrequencies.append("\n'").append(key).append("'"));
}
编译器告诉我调用 get(String key) 但我不知道键。所以我知道将它放入 Map 的代码很复杂,我知道,但在这种情况下我不能使用 Optional (任务禁止它)。我试图做得更简单,但没有任何效果。
我可以从 minEntryes.forEach 获得一个 key ,但我想知道是否有更好的解决方案。

最佳答案

我不清楚您要做什么,但是如果问题是如何在不知道 key 的情况下获取值:
第一种方法:使用for循环

    for (int value : minEntryes.values()) {
// use 'value' instead of 'minEntryes.getValue()'
}
第二种方法:迭代器“hack”(如果你知道总是有一个值)
    int value = minEntryes.values().iterator().next();
// use 'value' instead of 'minEntryes.getValue()'

关于Java Map getValue 不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63261772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com