gpt4 book ai didi

java - 从 Java 8 中的单词字典中计算文本的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:57 25 4
gpt4 key购买 nike

我在 Java 8 View 中转换算法时遇到问题。

我有一个由文章组成的arrayList

ArrayList<Article> listArticles = new ArrayList<>();

文章是这样写的

public class Article {
private String titleArticle;
private String abstractArticle;
private String textArticle;
private Long value;
}

在另一边,我有单词映射,每个单词都有一个关联的值

HashMap<String, Long> dictionary = new HashMap<>();

我想获取一篇文章的值(value)。一篇文章的值(value)是根据标题、摘要和正文中的字数(全部加在一起)计算的

在 Java 7 中我会做这样的事情(我希望我没有在这里犯任何错误)

for(Article article : dataArticles){
double valueArticle = 0;

for(Map.Entry<String, Long> word : dataDictionary.entrySet()){

//looping through the words in the title
for(String text : article.getTitle().split(" ")){
if(text.equalsIgnoreCase(word.getKey())){
valueArticle += word.getValue();
}
}
//looping through the words in the abstract
for(String text : article.getAbstractText().split(" ")){
if(text.equalsIgnoreCase(word.getKey())){
valueArticle += word.getValue();
}
}
//looping through the words in the abstract
for(String text : article.getText().split(" ")){
if(text.equalsIgnoreCase(word.getKey())){
valueArticle += word.getValue();
}
}
}

article.setValue(valueArticle);
}

如何通过减少时间过程来计算Array中每篇文章的值(value)?
我正在考虑使用 lambda,但也许这是一种糟糕的方法。
我是 Java 8 的新手,正在尝试学习它。

经过一些开发

仍在寻找如何使用流制作我的ArrayList。与此同时,我也想按照从最高文章值(value)到最低文章值(value)的顺序整理列表。我想象它会是这样的

Comparator<Article> byArticleValue = (a1, a2) ->
Integer.compare(a1.getValue(), a2.getValue());
dataArticles.stream()
.sorted(byArticleValue);

但我的列表未排序。在这种情况下我做错了什么?

最佳答案

HashMap 可以进行非常快速的查找。如果稍微重新组织一下代码,就可以节省大量的运行时间。

long getValueOfText(String text) {
long value = 0;
for(String word : text.split(" ")) {
Long v = dataDictionary.get(word);
if (v != null) {
value += v;
}
}
return value;
}

get 的调用几乎是免费的。无论您在 map 中存储了多少单词,查找一个单词都需要一定的时间。

编辑:它看起来比 Java 8 流好一些

long getValueOfText(String text) {
return Arrays.stream(text.split(" "))
.map(word -> dataDictionary.get(word))
.filter(v -> v != null)
.reduce(Long::sum).get();
}

关于java - 从 Java 8 中的单词字典中计算文本的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278692/

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