Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 概念:将信息放入内存位置_Search - Fatal编程技术网

Search 概念:将信息放入内存位置

Search 概念:将信息放入内存位置,search,Search,我在构思一个算法时遇到了困难,该算法用于将任何信息或数据转换为我将要设计的任何数据结构中的特定、适当和合理的内存位置 为了给你一个想法,我有一个JPanel对象实例,我创建了另一个任何子类型的容器类型对象实例(注意,这是Java,因为我喜欢这种语言),然后我将这些实例收集到一个数据结构中,不仅针对这些实例,而且还适用于任何类型的对象。现在,我再次获取这些数据的过程是提取与该数据结构中的所有对象在类别上相似的特定于对象的特征,并将其转换为整数数据内存位置(具体地说是尽可能多)或与此转换相关的任何类

我在构思一个算法时遇到了困难,该算法用于将任何信息或数据转换为我将要设计的任何数据结构中的特定、适当和合理的内存位置

为了给你一个想法,我有一个JPanel对象实例,我创建了另一个任何子类型的容器类型对象实例(注意,这是Java,因为我喜欢这种语言),然后我将这些实例收集到一个数据结构中,不仅针对这些实例,而且还适用于任何类型的对象。现在,我再次获取这些数据的过程是提取与该数据结构中的所有对象在类别上相似的特定于对象的特征,并将其转换为整数数据内存位置(具体地说是尽可能多)或与此转换相关的任何类型的数据。我已经可以访问该内存位置,而无需进一步排序或应用O(n)时间复杂算法(我认为这更可取,但我想用我自己的方式XD)。数据结构可以是任何类型的二叉树、链表、数组或集合(以及类似的XD)。重要的是,我不需要对数据进行连续的比较和分析,只需要在大型结构中定位信息

给你一个技术上的想法, 我必须创建一个数组DS,其中包含具有特定名称“HelloWorld”的JLabel对象实例。但是数组DS包含其他类型的对象(大量)。现在这个JLabel对象在数组中的索引[124324]处有一个位置(也就是说,如果你做任何类型的搜索算法只是为了到达那个位置,速度可能会很慢,因为添加到它上面的数据结构是一个数组*注意,请忽略要使用的数据结构的效率,我只想向你解释我的概念XD)。现在,我想通过使用一个适用于所有数据类型的概念性函数,将“HelloWorld”等同于124324。因此,我可以通过执行DS[extractLocation(“HelloWorld”)]直接搜索来获取JLabel实例


我知道这听起来可能很疯狂,但我想测试我的非排序特征提取搜索算法的概念,它适用于任何数据结构,其中我的主要问题是如何将要存储的信息转换到存储位置的内存中。

我想你要求的是一张
地图。映射不使用类似数组的索引,而是使用关联的键或标识符存储每个值

映射将存储多个不同类型的项,并允许您将它们与标识符关联,以便以后检索

像这样:

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()];
除非你对阵列有特别的需求,否则我只会使用地图


我希望这就是你要找的。如果没有,请澄清。

您认为您可以用更清晰的方式写这篇文章吗?很难理解你在问什么。抱歉,我不能给你更多的细节,因为这对于这个主题来说是非常多余的XDI想我喜欢你的答案,但是我如何确定使用map在时间复杂度方面是否有好处地图的查找和插入复杂度是O(1)-这是恒定时间,与地图大小无关。这假设一个完美的散列函数,但实际情况通常接近于此。搜索数组需要O(logn),其中n是数组大小,这是假设数组已排序,否则搜索是O(n)。你不会得到比映射或堆更好的时间复杂度。升级投票是因为人们花时间编写代码却没有被接受为答案或升级投票是可耻的。