今天逛了下論壇,發現有一種說法,集合不能儲存基本型別,都是儲存物件,我自己實驗了下,list報錯了,而list則通過了編譯。行吧,暫且認同這種說法。
本篇主要是說明集合中存入物件的問題。物件存入集合都是以記憶體位址的形式存入,當存入之後,修改了物件的值,就算沒有直接操作物件,那麼物件裡的值也會改變。
list中存入map集合物件,可以通過直接操作map物件,來修改已存入list的資料。
listlista = new arraylist<>();
mapmapb = new hashmap();
mapb.put("1", "1");
lista.add(mapb);
system.out.println(lista);
mapb.put("2", "2");
lista.add(mapb);
system.out.println(lista);
輸出
[, ]
這次實驗了string型別,似乎不可以通過物件修改集合裡的值。
listlistc = new arraylist<>();
string str = "!";
listc.add(str);
system.out.println(listc);
str="?";
system.out.println(listc);
輸出[!]
[!]
在map集合中存放list集合,同樣可以通過直接操作list集合來修改map中的值。
mapmaps = new hashmap();
listlists = new arraylist<>();
lists.add("1");
maps.put("222", lists);
system.out.println(maps);
lists.add("2");
system.out.println(maps);
輸出
在list為cc物件的型別中,通過直接修改cc物件,可以修改list值。
listlistsc = new arraylist<>();
cc acca = new cc(1 , "123");
listsc.add(acca);
system.out.println(listsc);
acca.setid(2);
system.out.println(listsc);
輸出
[cc [id=1, name=123]]
[cc [id=2, name=123]]
基本型別物件都不可以通過物件修改。而自定義物件或者集合都可以通過修改物件修改。 校驗List集合中的物件屬性問題
controller接收引數是乙個list user 的集合,需要校驗user中的name,password等屬性。實體類上加 notnull和 pattern註解 public class bizagentrewardinfo extends baseentity public void setl...
Android集合中物件排序
如果將集合中的物件進行排序,最近使用了乙個簡單的方法解決了,隨筆記下來。主要思路 首先,新建類實現comparator,這個類是做比較的關鍵類,一般做比較的型別 int 或 string型別。如果屬性為int型別比較方式為 rhs.getage lhs.getage 如果屬性為string型別方式為...
去除物件中的型別集合
一般來說,當某乙個物件有多個集合型別的子元素時,我們都會給每個子元素建立乙個集合物件來承載子元素,類似於 public class process 一般來說,這是沒什麼問題的。但是某些情況下,例如在圖形化與結構化文件之間進行轉化時,這樣做有很多弊端。如圖 圖中 participant1,展現型別為 ...