簡體   English   中英

如何從Java中的對象數組中檢索特定對象

[英]How to retrieve a specific object from an array of objects in java

我有大量的對象,其中的對象不斷增加,每個對象都是動態的,並且包含定義它的不同參數(getParam1()等)。

我需要一個數據類型,該數據類型允許我直接指向包含特定參數的數組中的對象,而不必每次需要特定對象時都對整個數組進行索引。

是否有任何數據類型都可以在Java中提供此功能,或者我必須創建自己的數據類型? 在那種情況下,我該怎么做?

謝謝。

您可以為每個參數維護一個映射,並在參數更改時更新每個映射。 如果您既不能控制變異類也不能控制可變類,那么除了線性搜索對象之外,您無能為力。

我有大量的對象,其中的對象不斷增加,每個對象都是動態的,並且包含定義它的不同參數(getParam1()等)。

array是靜態結構。 如果要不斷向其中添加元素,則應重新考慮使用動態集合,例如ListSetMap 如果您不修改數組的長度,而只是更新數組上的不同對象,那么就可以了。 盡管如此,您仍必須跟蹤陣列的當前狀態(索引,對象數量等),因為您將需要知道將對象放置在何處。

我需要一個數據類型,該數據類型允許我直接指向包含特定參數的數組中的對象,而不必每次需要特定對象時都對整個數組進行索引。

這將需要一種或多種中間邏輯。 如果您指向一個具有特定參數的對象,如果一個以上的對象具有該參數會發生什么? 您必須定義哪一個是正確的。 另一方面,如果您指向參數,則仍然需要了解相關對象。

我要說的是,不要使用array ,而應該嘗試使用包含鍵為參數,值為Set條目的Map ,其中包含與該參數相關的不同對象。

如果僅將參數映射到一個對象,則Map就足夠了,但是為了以防萬一,我將介紹更復雜的情況。

請注意,一個對象可以存在於多個Set ,因為需要兩個參數才能將其映射兩次以允許找到該對象。

我已經研究過地圖,但是當涉及到我的對象時,這並不是很理想。

我不知道您當前的上下文以及如何識別對象。 如果你有一個ID或任何形式的獨特的身份斷言,你可以打開MapSet s到一個MapMap 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM