集合中存入物件問題

2021-08-17 22:30:43 字數 1496 閱讀 6790

今天逛了下論壇,發現有一種說法,集合不能儲存基本型別,都是儲存物件,我自己實驗了下,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,展現型別為 ...