我有50个科目的清单。 我还有1000所学校的名单,这些学校将教授至少一门或多门这些科目。 每当我找到一所学校时,我都会考虑用它所教授的科目来缓存这所学校。以最佳方式保存这些数据的好方法是什么?
答案 0 :(得分:1)
我建议您使用哈希表,使用school作为键,以及元素的主题。哈希表的插入,删除和搜索操作的复杂性可能会有所不同,具体取决于处理额外冲突的方式(许多键可以在同一索引中进行哈希处理)。但是在你的问题中碰撞是不可避免的(主题在许多学校之间共享)所以例如,使用双重哈希的开放寻址可以减少额外的冲突,但不会减少你问题中的隐式冲突。如果你想自己实现它,使用良好的哈希函数(密钥在索引上的均匀分布)和简单的冲突列表,可以使您在O(50)中实现插入,在O(50)中删除(搜索主题及其删除)并在O中搜索(50)在最坏的情况下,我认为这个问题很好(并且实施起来简单快捷)。有关哈希表以及如何实现它的更多信息:https://en.wikipedia.org/wiki/Hash_table
答案 1 :(得分:0)
我会将这些信息存储在HashMap中。 HashMap存储键值对,因此您可以将每个学校映射到学校教授的科目。
以下是java中实现的代码示例:
public class Main{
public static void main(String[] args){
//Creates a HashMap with a String as the key and String[] as the value.
Map<String, String[]> schools = new HashMap<String, String[]>();
//Name of the college
String college = "College";
//Subjects offered at said college
String[] subjects = {"Physics","Calculus","Algorithms"};
//Stores the college and its subjects within the HashMap
schools.put(college, subjects);
//Search and print the given subjects any college stored in the map.
System.out.println(Arrays.toString(schools.get("College")));
}
}
此代码将返回:
[Physics, Calculus, Algorithms]