1. 程式人生 > >關於java的set方法意義

關於java的set方法意義

一直不明白為什麼有的未定義過set方法的集合要在上面先定義一個同樣型別的集合作為容器,然後把操作過的資料再一個個裝回來

    @Test
    public void libraryTest(){
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("a1");
        arrayList.add("a2");
        arrayList.add("a41");
        arrayList.add("a5");
        arrayList.add("a6");
        //操作集合
        for (String str : arrayList) {
            str = str + "END";
        }
    }

這裡寫圖片描述

  • 而定義過set方法的物件則不需要

    public class AwakeTest {
        class StringUser{
            private String str;
            public StringUser(String str){
                this.str = str;
            }
            public String getStr() {
                return str;
            }
    
            public void setStr(String str) {
                this.str += str;
            }
    
        }
        @Test
        public void libraryTest(){
            ArrayList<StringUser> arrayListDM = new ArrayList<>();
            arrayListDM.add(new StringUser("d1"));
            arrayListDM.add(new StringUser("d2"));
            arrayListDM.add(new StringUser("d3"));
            arrayListDM.add(new StringUser("d4"));
            arrayListDM.forEach(item -> item.setStr("END"));
            System.err.println(arrayListDM);
        }
    
        public void set(String s) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append(s);
            stringBuilder.append("hsapfhoag");
        }
    

    }

這裡寫圖片描述

  • 因為set方法雖然改變了物件的某些內容,但是它在集合之中的地址是不曾變過的
  • 而基本資料型別的資料,變化值的同時地址已經發生了變化,必須每次都把遍歷的每個資料單獨儲存起來