我有一个非常大的对象数组,其中对象不断添加,并且每个对象都是动态的,并且包含定义它的不同参数(getParam1()等..)。如何检索java中的对象数组中的特定对象
我需要一种数据类型,它允许我直接指向数组中包含特定参数的对象,而不必在每次需要特定对象时都索引整个数组。
是否有任何数据类型在java中提供此功能,还是我必须创建自己的?在那种情况下,我该怎么做?
谢谢。
我有一个非常大的对象数组,其中对象不断添加,并且每个对象都是动态的,并且包含定义它的不同参数(getParam1()等..)。如何检索java中的对象数组中的特定对象
我需要一种数据类型,它允许我直接指向数组中包含特定参数的对象,而不必在每次需要特定对象时都索引整个数组。
是否有任何数据类型在java中提供此功能,还是我必须创建自己的?在那种情况下,我该怎么做?
谢谢。
您可以为每个参数维护一个映射,并在参数更改时更新每个映射。如果您无法控制变异或可变类,那么除了线性搜索对象之外,您可以做的其他事情不多。
我有一个非常大的对象数组,其中不断添加对象,每个对象都是动态的,并且包含定义它的不同参数(getParam1()等..)。
一个array
是一个静态结构。如果您要不断添加元素,则应重新考虑使用动态集合,例如List
,Set
或Map
。如果你没有修改数组的长度,而只是更新它上面的不同对象,那你就没问题。尽管如此,您仍然需要跟踪数组当前状态(索引,对象数量等),因为您需要知道将对象放在哪里。
我需要一种数据类型,它允许我直接指向数组中包含特定参数的对象,而不必在每次需要特定对象时都对整个数组进行索引。
这需要一些中间逻辑。如果指向一个具有特定参数的对象,如果有多个对象存在,会发生什么?你必须定义哪一个是正确的。另一方面,如果你指向参数,你仍然需要知道相关的对象。
我想说,而不是使用array
你应该尝试一个Map
与条目的关键是参数和值是一个Set
,其中包含与该参数相关的不同对象。
如果仅将一个参数映射到一个对象,那么A Map
就足够了,但我会覆盖更复杂的情况,以防万一。
请注意,一个对象可以出现在多个Set
之间,因为两个参数需要映射两次以便找到它。
我已经看过地图,但它对于我的对象来说并不是很理想。
我不知道您当前的上下文以及如何识别您的对象。如果你有一个ID或任何形式的独特的身份断言的,你可以把Set
的Map
的s到一个Map
或Map
S其中您可以获取包含关联到某个功能对象地图,然后获得通过ID的特定对象。
最后,如果没有足够的东西,您应该创建一个涵盖您的需求的结构。尽管如此,对于即时访问,您最好使用Map
或真正润滑的array
。
使用Map
而不是数组:
Map<String, MyObject> map = new HashMap<String, MyObject>();
MyObject o;
String someId = o.getId(); // use some identifying id for your objec
map.put(someid, o); // do this for all your objects
那么当你需要检索一个:
MyObject o = map.get(someId);
如果你需要的所有对象(可能的,但不太可能):
List<MyObject> objects = map.getValues();
你想指向一个特定的*对象*或固定的数组*位置*?你的指针应该如何对数组中的变化做出反应? – Thilo
查看使用[Map](http://docs.oracle.com/javase/6/docs/api/java/util/Map.html)。 – jahroy
“超大”1000个物体,1,000,000,000个物体有多大? –