處理Set集合

2021-09-03 06:57:09 字數 3150 閱讀 6923

筆者不建議在

action

中使用set

集合屬性,因為

set集合裡元素處於無序狀態,所以

struts 2

不能準確地將請求引數轉換成

set元素。不僅如此,由於

set集合裡元素的無序性,所以

struts 2

也不能準確讀取

set集合裡的元素。

除非set集合裡的元素有乙個標識屬性,這個標識屬性可以唯一地表示集合元素,這樣

struts 2

就可以根據該標識屬性來訪問集合元素了。

程式清單:

public class loginaction extends actionsupport

public set getusers()

//

省略birth

屬性的setter

和getter方法

...//沒有提供

execute()方法,

//將直接使用

actionsupport

的execute()方法

}上面loginaction

的users

屬性的型別是

set,為了讓

struts 2

能將請求引數轉換成

set集合物件,我們提供如下型別轉換器。

程式清單:

public class userconverter extends strutstypeconverter

return result;

}

public string converttostring(map context, object o)

return result + "]";

}else}}

上面的粗體字**實現了將字串陣列轉換成

set集合的轉換處理。除此之外,為了讓

struts 2

能準確地訪問

set集合元素,我們還必須讓

sturts 2

明白set

集合元素的標識屬性,指定

struts 2

根據該標識屬性來訪問

set集合元素。

本應用中

users

屬性所包含的集合元素為

user

類,該類的**如下。

程式清單:

public class user

//

只有當

obj

user

物件

if (obj != null && obj.getclass() == user.class)

}

return false;

}

//

根據name

屬性來計算

hashcode

public int hashcode()

}

從user

類的粗體字**(重寫了

equals

和hashcode

兩個方法)可以看出,該

user

類的標識屬性是

name

,當兩個

user

的name

相等時即可認為它們相等。

struts 2

允許通過區域性型別轉換檔案來指定

set集合元素的標識屬性,在區域性型別轉換檔案中增加如下一行即可指定

set集合元素的標識屬性。

keyproperty_=

將上面的

替換成集合屬性名,將

替換成集合元素的標識屬性即可。由於本應用的區域性型別轉換檔案還需要指出

set集合元素的型別,所以該區域性型別轉換檔案的**如下。

程式清單: #

指定users

屬性的型別轉換器是

lee.userconverter

users=lee.userconverter#指定

users

集合屬性裡集合元素的索引屬性是

name

keyproperty_users=name

一旦指定了集合元素的索引屬性後,

struts 2

就可以通過該索引屬性來訪問

set集合元素了。下面是在

jsp頁面中通過索引屬性直接訪問

set元素的**片段。

使用者crazyit.org

的使用者名為:

使用者crazyit.org

的密碼為:

使用者b的使用者名為:

使用者b的密碼為:

生日為:

通過**可以看出,直接訪問

set元素的方式是:

('')

——該方式訪問的是索引屬性為指定值的集合元素。上面**將會輸出

set屬性裡的兩個

user

例項的name

和pass

,前提是這兩個

user

例項的標識屬性(

name

屬性)值分別為

scott

和yeeku。

注意:上面訪問

set元素用的是圓括號,而不是方括號。但對於陣列、

list

和map

屬性,則通過方括號來訪問指定集合元素。

處理Set集合

筆者不建議在 action 中使用set 集合屬性,因為 set集合裡元素處於無序狀態,所以 struts 2 不能準確地將請求引數轉換成 set元素。不僅如此,由於 set集合裡元素的無序性,所以 struts 2 也不能準確讀取 set集合裡的元素。除非set集合裡的元素有乙個標識屬性,這個標識...

處理集合 建立Set

使用內建建構函式建立set,如果不傳入任何引數,將建立乙個空set。可以傳入字串 new set kuma hattori yagyu hattori set成員的值都是唯一的,最重要的作用是避免儲存多個相同的物件。在本例子中,檢視新增兩次 hattori 但是只成功新增一次。set具有多個可訪問的...

js的set集合的處理

最根本的區別是陣列是乙個索引集合,這說明陣列中的資料值按索引排序。const arr a,b,c,d console.log arr.indexof a result 0 console.log arr.indexof c result 2 相比之下,set是乙個鍵的集合。set不使用索引,而是使用...