セットは、どの要素を含むかどうかを決定するのArrayList

ArrayListのに使用される要素(オブジェクトOBJ)メソッドが含まれており、存在するか否かを判定する
含有()メソッドは、メソッドに等しいに依存しているが。
誰もが知っているように、等号()メソッド内のオブジェクトは、実際には2つのオブジェクトのアドレス値が等しい、2つのオブジェクトが同じであるかどうかと等価であるかどうかを決定します。
レッツ・理解するための使用例を:
簡単にこのような場合には理由を説明
、それは偶然の一致があるいくつかの要素のコレクションです、私たちがしなければならないが、別のコレクションにこのコレクションの要素を置くことで、その後、新しいコレクション要素が一致していません。

import java.util.*;

class book
{
	private String name;
	private double price;
	book(String name,double price)
	{
		this.name=name;
		this.price=price;
	}

	public String getname()
	{
		return this.name;
	}
	public double getprice()
	{
		return this.price;
	}
}

public class arraylistdemo3 {
	public static void main(String[] args)
	{
		ArrayList list=new ArrayList();
		list.add(new book("c",100.0));
		list.add(new book("c++",150.5));
		list.add(new book("c#",50.4));
		list.add(new book("c#",50.4));
		list.add(new book("java",70.99));
		list.add(new book("java",70.99));
		
		list=preparation(list); 
		
		Iterator it=list.iterator(); 
		while(it.hasNext())
		{
			book b=(book)it.next();
			sop(b.getname()+"    "+b.getprice());
		}
		
	}
	
	public static ArrayList preparation(ArrayList list)
	{
		ArrayList newa=new ArrayList();
		
		Iterator it=list.iterator();
		while(it.hasNext())
		{
			Object obj=it.next();
			if(!newa.contains(obj))
				newa.add(obj);
		}
		return newa;
	}
	
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

我々はまだああ一致しているコレクション内の新しい要素の最初の実行をした後しかし、これはなぜですか?
これは、要素()関数を達成するために等しく、それは等しい()内のパラメータには、オブジェクトが含まれている実際にでネバに含まれているかどうかを判断するために準備中()関数である()の判定は、オブジェクトのアドレスであります同じですが、これらのオブジェクトを決定するために)ので、(含まれている、オブジェクトのセットリストは、彼らの新しい、そして確かに違うの内側にあることは明らかである、それはに置かれるので、もはやネバ年ません。
そのため、異なるタイトルと価格の区別を標的とするために、我々は、(対等に予約する必要があります)カバーしました。
以下は、変更後のような本です

class book
{
	private String name;
	private double price;
	book(String name,double price)
	{
		this.name=name;
		this.price=price;
	}
	public boolean equals(Object obj)   //覆盖Object里的该方法
	{
		if(!(obj instanceof book))
			return false;
		book b=(book)obj;
			return this.name.equals(b.name) && this.price==b.price;
	}
	public String getname()
	{
		return this.name;
	}
	public double getprice()
	{
		return this.price;
	}
}

私は発現しない、非常に明確ではない話すことが可能であるので、私は再びコメントエリアバー(Wulian)の小さなパートナーを読み取ることができないか、エラーが発見されました

リリース5元の記事 ウォンの賞賛1 ビュー114

おすすめ

転載: blog.csdn.net/weixin_42371679/article/details/104398431