gpt4 book ai didi

java - 如何以巧妙的方式从两个堆栈创建对

转载 作者:行者123 更新时间:2023-12-02 05:29:18 24 4
gpt4 key购买 nike

我有两个堆栈; Stack<String> fileStack<String[]>author 。它们具有一对一的关系,即

file            author

file1 author3, author2 // file1 is written by author3 and author2
file2 author1, author2 // file2 is written by author1 and author2

我尝试创建新的数据结构(我认为 Map 是最好的)来包含成对的所有信息。例如;

new data structure

author1, file2
author2, file1, file2
author3, file1

为了创建这一对,我使用了 HashMap<String, Set<String> allInfo ,并将串联实现为;

int len = author.size();

for(int i = 0 ; i <len ; i ++ ){
String []temp = author.pop();
int len2 = temp.length();

for(int j = 0 ; j <len2 ; j ++ ){
if(allInfo.contains(temp[j]) == false){
Set<String> list = new HashSet<String>();
allInfo.put(temp[j], list);
}

Set<String> temp2 = allInfo.get(temp[j]);
temp2.add(file.pop());
}
}

但是,这个实现似乎很丑陋。我怎样才能更巧妙地创造这一对? (优先使用Java内置方法。)

最佳答案

下面的代码只是稍微好一点。有一些(非 JDK)库提供了一种称为 multimap 的数据结构,这更方便。但是您受困于两个堆栈以及关联的逆序,因此您需要一些编码工作。

while( ! author.empty() ){
String f = file.pop(); // Note that in your code this is in the wrong place
for( String aut: author.pop() ){
Set<String> files = allInfo.get( aut );
if( files == null ){
files = new HashSet<>();
allInfo.put( aut, files );
}
files.add( f );
}
}

关于java - 如何以巧妙的方式从两个堆栈创建对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700949/

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