- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在一次采访中被问及这个问题,我得到了一个字符串,其中包含教师和他们教授的相应科目作为输入字符串。获取科目和相应教师作为输出的任务。我已经解决了,但我有几个问题:
这是我程序的输入:
T1:S1,S3|T2:S1,S2,S4|T3:S1,S4,S5
这里T代表老师,S代表学生。在上面的例子中,T1 老师教授科目 S1 和 S3。 T2老师教授科目S1、S2、S4等
现在需求是获取Subject和对应的teacher。
["S1:T1,T2,T3", "S2:T2", "S3:T1", "S4:T2,T3", "S5:T3"]
表示科目 S1 由教师 T1、T2、T3 教授。科目S2由T1等教授。
我想出了以下可以正常工作的代码:
/**
* input: "T1:S1,S3|T2:S1,S2,S4|T3:S1,S4,S5"
* output : ["S1:T1,T2,T3", "S2:T2", "S3:T1", "S4:T2,T3", "S5:T3"]
*/
static List<String> process(String input) {
List<String> output = null;
// Split by |
String[] arr = input.split("\\|");
Map<String, List<String>> map = new HashMap<>();
// map with key as Teacher name and value as list of students
for(int i=0; i< arr.length; i++) {
String[] data = arr[i].split(":");
map.put(data[0], Arrays.asList(data[1].split(",")));
}
Map<String, List<String>> res = new TreeMap<>();
//Build map with key as student and value as list of teachers
for(String key : map.keySet()) {
List<String> list = map.get(key);
for(String val : list) {
List<String> temp = res.get(val);
if(temp == null) {
temp = new ArrayList<>();
res.put(val, temp);
}
temp.add(key);
}
}
output = new ArrayList<>();
// Build the output as per requirement
for(String key : res.keySet()) {
StringBuilder sb = new StringBuilder();
List<String> temp = res.get(key);
for(String v : temp)
{
sb.append(v).append(",");
}
output.add(key + ":" + sb.toString().substring(0, sb.toString().length()-1) );
}
return output;
}
能否请你帮我解决这些疑惑。
最佳答案
只回答你想将其转换为 Java 8 Stream API 的部分,所以请不要接受这个答案:)
public static void main(String[] args) {
String input = "T1:S1,S3|T2:S1,S2,S4|T3:S1,S4,S5";
System.out.println(process(input));
}
private static List<String> process(String input) {
return Arrays.stream(input.split("\\|"))
.flatMap(s -> List.of(s.split(":")[1].split(","))
.stream()
.map(s1 -> s.split(":")[0] + ":" + s1))
.collect(Collectors.toMap(o -> o.split(":")[1],
o -> o.split(":")[0],
(o1, o2) -> o1 + "," + o2))
.entrySet().stream()
.map(e -> e.getKey() + ":" + e.getValue())
.collect(Collectors.toList());
}
输出
[S3:T1, S4:T2,T3, S5:T3, S1:T1,T2,T3, S2:T2]
关于java - 分组 Subject 和教师并提高代码性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54876736/
如果 Subject 继承自 Observable,那么基于任何 Subject 的下一个选项有什么区别,例如: private val locationSubject: ReplaySubject
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试从内部使用 Rx.Subject 的函数返回一个可观察对象。当然,与任何好的 API 一样,实现细节应该完全从消费者那里抽象出来。但是,使用 Subject.asObservable() 似
我使用 angular2 rxjs 来测试它的多播功能,这是我的代码: var source = Observable.from([1, 2, 3]); var subject = new Subje
我需要一个可以显示每个主题的最高分数计数的查询。假设 3 名学生的科学成绩需要达到 98 分 count marks subject 3 98 Maths 最佳答案 首先找到每个
我正在使用JavaFX 11(OpenFX)运行一些应用程序。该应用程序是用IntellijIdea编写的,并使用gradle构建。在IDE中运行时,一切正常。构建jar时,它构建成功,但是当我尝试执
我继承自模板类。当我进入教师类(class)时,我想进入学科类(class),反之亦然。我收到错误 Invalid use of incomplete type struct Subect; void
Angular 2 和 Typescript 应用。 我在 NPM 包中有一个抽象类,我试图在我的应用程序代码中提供实现。这一切都很好,直到我添加了公众 isLoggedIn:Subject;属性(p
我从 this tutorial 中提取了示例模板代码并执行以下两个步骤开始 - npm install//工作正常并创建了包含所有依赖项的 node_modules 文件夹 npm 开始//失败并出
我需要答案来显示最低分和最高分,同时给出正确的主题 import java.util.Scanner; //import package class Task11 { public stati
如果我的这个类有一个在其生命周期中发出单一值的主题: export class MyClass { myEmitter$: Subject = new Subject(); someMetho
我正在尝试用 ionic 制作一个小应用程序,但是当我从 UI 调用 $scope.saveClass() 函数时它给了我这个错误。 无法获取未定义或空引用的属性“subject” 我不明白,因为他不
背景 我有一个核心数据实体 Entry 与另一个实体 DataField 有关系: class Entry: NSManagedObject { //[...] @NSManaged
我知道这个问题更像是一个语法问题,但是如果你有一组 Penn Treebank 标记,你如何确定句子的“主题”,例如: [WP][VBZ][DT][NN] 是否有任何 Java 库可以接收此类标记并确
我使用 SwiftUI 构建了一个 LoadingView,用于在我从 API 获取远程数据时显示我的应用程序中的一些加载内容。我正在使用 Xcode 版本 11.0 beta 5。 这是Loadin
Subjects 介绍 1. Subjects 是订阅者,也是Observable 订阅者:它能动态的接收新的值。 Observable: 当Subjects有了新值后会通过Event将新值发
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
我需要了解主题在 Weblogic 中如何存储和传播。 经过身份验证后,主题存储在 HTTP 层的哪里?在内部,它存储在 HTTPSession 中吗? 同理,EJB层存储在哪里? 我有一个应用程序,
我经常遇到这样的情况,我想要一个 UI 元素来“观察”一个基础值——假设我正在显示一个 int——我想要一个我可以订阅的 IObservable。 我下面一直用的是Subject,直接设置就可以了
我有一个简单的服务。 import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export cl
我是一名优秀的程序员,十分优秀!