我在构思一个算法时遇到了麻烦,该算法用于将任何信息或数据转换为我将要设计的任何数据结构中的特定适当和合理的内存位置。
为了给你一个想法,我有一个JPanel对象实例,我创建了任何子类型的另一个Container类型对象实例(注意这是Java,因为我喜欢这种语言),然后我将这些实例收集到一个数据结构中,而不是具体的仅适用于那些实例,但也适用于任何类型的对象。现在我再次获取这些数据的过程是提取与该数据结构中的所有对象类似的对象特定功能,并将其转换为整数数据存储器位置(特别是尽可能多)或任何类型的数据。这种转变。而且我已经可以访问该内存位置而无需进一步排序或应用O(n)时间复杂算法(我认为这更好,但我想以自己的方式进行XD)。数据结构可以是任何类型的二叉树,链表,数组或集(以及类似的XD)。重要的是我不需要对数据进行连续的比较和分析,只是为了在大结构中定位信息。
为了给你一个技术想法, 我必须使用包含具有特定名称“HelloWorld”的JLabel对象实例的数组DS。但是数组DS包含其他类型的对象(众多)。现在这个JLabel对象在索引[124324]的数组中有一个位置(如果你做任何类型的搜索算法只是为了到达那个位置是可以想象的慢,因为添加到它使用的数据结构是一个数组*请注意请忽略要使用的数据结构的效率我只想向您解释我的概念XD)。现在我想通过使用适用于所有数据类型的概念化函数将“HelloWorld”等同于124324。这样我就可以直接搜索DS [extractLocation(“HelloWorld”)]来获取JLabel实例。
我知道这可能听起来很疯狂,但我想测试我的非排序功能概念,为任何数据结构提取搜索算法,其中我的主要问题是如何将信息转换为存储到存储位置的存储位置。 / p>
答案 0 :(得分:1)
我认为你要求Map
。映射不使用像数组这样的索引,而是使用关联的键或标识符存储每个值。
地图将存储多个不同类型的项目,并允许您将它们与标识符相关联,以便日后检索。
像这样:
JLabel label = new JLabel("Hello world");
Map map = new HashMap();
// store the lable in the map, using it's text as the key.
map.put("Hello world", label);
// or equivalently,
map.put(label.getText(), label);
// ... later on, when you want the label
JLabel helloWorldLabel = (JLabel)map.get("Hello world");
assert hellowWorldLabel==label; // true
如果必须使用数组,仍然使用地图并将索引添加为值,将标识符添加为键,
Object[] DS = ...; your array, with JLabel in 124324
// When you add the object to the array, also add it's index to the map
map.put("Hello world", 124324);
//.. later when you need the value
Integer index = map.get("Hello World");
JLabel label = (JLabel)DS[index.intValue()];
除非您对阵列有非常特殊的需求,否则我会使用Map。
我希望这就是你要找的东西。如果没有,请澄清。