兩個List比較各自物件的屬性相同的問題

2022-01-22 04:37:45 字數 2042 閱讀 3951

最近做checkbox預設勾選的時候,涉及到兩個list直接比較彼此物件的id屬性是否相同的問題。能力有限,想到這個笨方法。

建立乙個bean:

public

class

bean

public

void

setname(string name)

public

string getid()

public

void

setid(string id)

public

string getch()

public

void

setch(string ch)

}

造出兩個list:

bean b1 = new

bean();

b1.setid("1");

b1.setname("n1");

bean b2 = new

bean();

b2.setid("2");

b2.setname("n2");

bean b3 = new

bean();

b3.setid("3");

b3.setname("n3");

bean b4 = new

bean();

b4.setid("4");

b4.setname("n4");

bean b5 = new

bean();

b5.setid("2");

b5.setname("n2");

bean b6 = new

bean();

b6.setid("1");

b6.setname("n1");

list

la = new arraylist();

la.add(b1);

la.add(b2);

la.add(b3);

la.add(b4);

list

lb = new arraylist();

lb.add(b5);

lb.add(b6);

寫乙個測試的main方法:

for(int i=0;i)

else

system.out.println("eeee"+la.get(i).getid()+"-----"+la.get(i).getch());

}

輸出結果是:

eeee1-----

eeee2-----

eeee3-----

eeee4-----

這結果完全不是自己想要的,查了一下,list.contains(o),系統會對list中的每個元素e呼叫o.equals(e),方法,假如list中有n個元素,那麼會呼叫n次o.equals(e),只要有一次o.equals(e)返回了true,那麼list.contains(o)返回true,否則返回false,控制台列印了一下直接返回的false,頓時明白了什麼。

重新修改下

for(int i=0;i)

else

}system.out.println("eeee"+la.get(i).getid()+"-----"+la.get(i).getch());

}

輸出結果:

eeee1-----ch

eeee2-----

eeee3-----

eeee4-----

這結果還是不對啊,無奈想到了debug斷點除錯,發現問題了,再次修改一下了。

for(int i=0;i)

else

}system.out.println("eeee"+la.get(i).getid()+"-----"+la.get(i).getch());

}

輸出結果

eeee1-----ch

eeee2-----ch

eeee3-----

eeee4-----

兩個List比較各自物件的屬性相同的問題

最近做checkbox預設勾選的時候,涉及到兩個list直接比較彼此物件的id屬性是否相同的問題。bean類 public class bean public void setname string name public string getid public void setid string ...

兩個物件屬性的比較

兩個物件的引用比較可以用equal 但是兩個物件的屬性比較就比較麻煩一些,寫乙個方法,僅供參考 1 public static bool propertyequals object aobject1,object aobject2 2 27 28else if vobject1 is list vo...

python比較兩個list

自己寫的,耗時很長。當兩個list是100000級別長度的資料時,需要好幾分鐘 if jpg not in list2 paython自帶方法。速度很快 list3 list set3 初始化資料 lista zhangsan lisi wangwu listb zhangsan lisi zhao...