首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java接口的返回列表

Java接口的返回列表
EN

Stack Overflow用户
提问于 2022-10-17 09:20:46
回答 3查看 71关注 0票数 0

我必须创建一个单词计数器程序。这在逻辑上并不是很困难,但我正在处理接口。因此,首先,我必须创建一个实现定义接口的类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface WordFrequency {
String getWord();
int getFrequency();
}

我必须创建另一个类,它实现了定义的另一个接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface WordFrequencyAnalyzer {
int calculateHighestFrequency(String text);
int calculateFrequencyForWord (String text, String word);
List<WordFrequency> calculateMostFrequentNWords (String text, int n);
}

现在,这个接口中的第三个方法返回前一个接口的列表。我会保持地图中单词的频率。此方法要求我返回给定文本中N个最高频率的单词。使用降序值对映射进行排序并相应地返回是非常容易的,但是如何用映射中的正确值创建这个特定接口的列表以返回所需的格式?

编辑:我使用Map<String,Integer> m = new HashMap<String,Integer>()存储单词及其频率。这就是我需要存储在List<WordFrequency>中并返回的内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-17 10:16:37

您可以将此示例视为用例的起点:

接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface WordFrequency {
    String getWord();
    int getFrequency();
}

上述接口的实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class WordFreqImpl implements WordFrequency {

    final String w;
    final Integer f;

    public WordFreqImpl(String word, Integer freq) {
        w = word;
        f = freq;

    }
    @Override
    public String getWord() {
        return w;
    }

    @Override
    public int getFrequency() {
        return f;
    }

    @Override
    public String toString() {
        return "" +
                "w=" + w +
                ", f=" + f;
    }
}

按照您的需求获取列表的演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class WordFreqDemo {
    public static void main(String[] args) {
        Map<String,Integer> m = new HashMap<>();
        m.put("k1",1);
        m.put("k2",2);
        m.put("k3",3);

        List<WordFrequency> wordFrequencyList = new ArrayList<>();

        for (Map.Entry<String, Integer> entry: m.entrySet()) {
            wordFrequencyList.add(new WordFreqImpl(entry.getKey(), entry.getValue()) {
            });
        }

        for (WordFrequency w: wordFrequencyList) {
            System.out.println(w);
        }
        
        // return wordFrequencyList as per use case
    }
}

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
w=k1, f=1
w=k2, f=2
w=k3, f=3
票数 1
EN

Stack Overflow用户

发布于 2022-10-17 10:13:40

简单地说,您必须有一个实现接口的具体对象。然后,可以将该对象添加到列表中,因为除了默认情况下的任何对象之外,它现在还将是一个WordFrequency对象。您还需要一个实现WordFrequencyAnalyzer接口的对象。

接口是一个契约,它保证实现该接口的任何对象都会有特定的行为。它抽象出实现,并允许对象具有更多的多态性。

这是一个很好的接口资源。

https://www.geeksforgeeks.org/interfaces-in-java/

票数 0
EN

Stack Overflow用户

发布于 2022-10-17 10:29:50

仍然是一个答案,显示record为ad数据类,以及Stream-。

地图中的n最高频率条目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
record Fr(String word, int frequency) implements WordFrequency {
    @Override
    public String getWord() {
       return word;
    }
    @Override
    public int getFrequency() {
        return frequency;
    }
}

Map<String,Integer> m = ...
List<WordFrequency> wfs = m.entrySet().stream()
    .sorted(e -> Comparator.comparingInt(e.getValue()).reversed()
                           .thenComparing(e.getKey()))
    .limit(n)
    .map(e -> new Fr(e.getKey(), e.getValue())
    .collect(Collectors.toList()):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74100934

复制
相关文章
(三)回调 ref 中调用次数问题
# 🍇一、回调形式的 ref 的调用次数 class Demo { showInfo = () => { let {input} = this alert(input.value) } render() { return ( <div> <input ref={(currentNode) => this.input = currentNode; console.log('@',
老怪兽
2023/02/22
7100
(三)回调 ref 中调用次数问题
JS调用栈/回调队列/事件循环
单线程容易遇到一个问题:阻塞 解决办法:异步回调 解决原理:调用栈把会阻塞的函数丢到Web APIs里,Web APIs再把它丢到回调队列里, 通过事件循环——看着调用栈空了,就把回调队列里的函数丢回调用栈里让它执行
杨肆月
2019/08/20
4K0
JS调用栈/回调队列/事件循环
回调
回调简单而言:在一个类(A)的方法(a)中调用另一个类(B)的方法(b),当方法(b)执行完之后就调用类(A)中的方法(c),这就是回调的过程,是不是很简单?简单分析可以知道一个类(A)持有另一个类(B)的引用,方法(c)就叫做回调函数,画成UML图就如下所示:
晚上没宵夜
2020/03/10
2.6K0
​29 - 回调函数和回调地狱
原文地址:https://dev.to/bhagatparwinder/callback-functions-callback-hell-79n
前端黑板报
2022/12/01
4.6K0
什么是回调地狱?如何解决回调地狱问题_地狱回调
这个问题呢,需要从Node.js的API说起,这里就会有人问了?博主你不是说回调地狱的问题吗,怎么说到API了,别急,看博主一步一步的解释给你听:
全栈程序员站长
2022/11/15
3.2K0
JavaScript异步调用操作可增加finally回调
JavaScript异步调用操作(如远程服务、本地任务)的API一般只提供的执行成功(success)和执行失败(fail)的回调,其实还可以提供一个无论执行成功还是失败最终都会执行的回调(finally),使得一些扫尾工作不用在成功和失败的回调代码中都重复写一遍,流程更加清晰规整。
LeoXu
2018/08/15
5400
MessageHandler 高级用法二:原生调用JS 实现回调
在 上一篇中 我们实现了原生和JS 的方法调用,这篇解决一下在 APP 中调用JS方法时怎么含有 JS 的回调
onety码生
2018/11/21
4.1K0
为什么加了@Transactional注解,事务没有回滚?
在前天的《事务管理入门》一文发布之后,有读者联系说根据文章尝试,加了@Transactional注解之后,事务并没有回滚。经过一顿沟通排查之后,找到了原因,在此记录一下,给后面如果碰到类似问题的童鞋一个参考。
程序猿DD
2020/07/16
9350
七、回调
修改PspNotifyEnableMask为00000009,创建和退出进程时就不会触发回调
zhang_derek
2022/09/29
1.6K0
关于回调
爱学习的前端歌谣
2023/10/18
1760
关于回调
回调函数
什么是回调函数,上面的问题说的是不是很空洞,不是太形象,下面是知乎上的一位网友给的答案:
LiosWong
2018/10/29
3.8K0
回调函数
  有点类似模板的功能,可以使用函数指针作为参数,当调用函数时,使用void *进行传递参数,细致比较时,再用int *之类的进行强制转换。回调函数,其实就是在参数中定义函数,调用时,回到主函数去调用这个函数。仔细用法如下: 首先定义查找函数 Node * search_list(Node *node, void const *value, int (*compare)(void const *,void const *)){ while(node!=NULL){ if(compar
用户1154259
2018/01/17
3.3K0
回调函数
回调地狱
一个函数,作为参数的形式传给另一个函数调用,那么这个这个函数就叫做回调函数。 当然回调函数很常见,如下
用户4793865
2023/01/12
1.4K0
回调地狱
前言 从前一文中你真的了解回调?我们已知道回调函数是必须得依赖另一个函数执行调用,它是异步执行的,也就是需要时间等待,典型的例子就是Ajax应用,比如http请求,在不刷新浏览器的情况下,当你执行DO
itclanCoder
2020/10/28
2.3K0
回调地狱
回调函数
原文链接:https://note.noxussj.top/?source=cloudtencent 什么是回调函数? 简单的来说,一个函数作为另外一个函数的参数,可以称为回调函数。这个理解其实不完全
菜园前端
2023/05/20
1.7K0
jQuery的回调模块 -- 为什么放弃使用Cache
jQuery1.7之后加入了回调模块 -- jQuery.Callbacks()。
用户7293182
2022/01/17
6370
使用委托实现同步回调与异步回调
使用委托可以执行的一项有用操作是实现回调。回调是传入函数的方法,在函数结束执行时调用该方法。 例如,有一个执行一系列数学操作的函数。在调用该函数时,也向其传递一个回调方法,从而在函数完成其计算工作时,调用回调方法,向用户通知计算结果。 同步回调    首先声明两个方法: AddTwoNumbers():接受两个整型实参以及一个类型委托 ResultCallback():接受一个字符串,并显示出来。代码如下: using System; using System.Collections.Generic
hbbliyong
2018/03/05
3K0
使用委托实现同步回调与异步回调
源码分析Dubbo异步调用与事件回调机制
在Dubbo中,引入特定的过滤器FutureFilter来处理异步调用相关的逻辑,其定义如下:
丁威
2019/06/10
2.3K0
源码分析Dubbo异步调用与事件回调机制
Fragment回调Activity
如果你需要在fragment中处理一些事情,事情的处理结果或者你需要告 诉activity马上要做什么事,这时候就需要和activity进行通讯。包括很多fragment在viewpager中的情况,而且可以保证activity能即时进行响应。相比发送广播,性能更好,代码更少。
坑吭吭
2018/08/31
1.8K0
回调函数案例
内置数据类型: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //回调函数---通用数组型打印案例 //参数1:数组首地址 参数2:数组中每个元素的大小 参数3:数组元素个数 参数4:回调函数对数组内容进行输出 void printArray(void* array, int size, int len, void(*MyPrint)(void *)) { //void*没有数组的概念,因此如果想通用可以用char*,如果用int*的话,打印字符串
大忽悠爱学习
2021/03/04
3.9K0

相似问题

未收到来自BeginGetResponse的回调

20

从HttpWebRequest.BeginGetResponse回调中获取数据

43

为什么这个AJAX回调没有被调用?

22

没有调用“数据”事件的回调,为什么?

11

Windows phone 8开发人员:从未调用过HttpWebRequest.BeginGetResponse回调

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文