码迷,mamicode.com
首页 > 其他好文 > 详细

集合元素的判断

时间:2015-11-04 00:40:18      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

判断序列中是否包含某些元素:

List与Set集合判断的方法都是从Conllection接口继承的contains方法

 

ListJudgeDemo(List判断演示):

contains方法底层调用的是每个元素的equals方法,若有一个返回true则contains方法返回true

所以使用contains方法需重写储存的元素对象的equals方法

技术分享
 1 import java.util.*;
 2 class ListJudgeDemo//List判断演示 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         List<courses> list = new ArrayList<courses>();
 7         
 8         addAll(list);
 9         
10         //contains方法比较一个
11         boolean b = list.contains(new courses("1","首席技术官"));
12         System.out.println(b);
13         //containsAll方法多个
14         courses[] cc = {new courses("1","首席技术官"),new courses("2","技术总监"),
15             new courses("3","首席架构师")};
16         boolean b1 = list.containsAll(Arrays.asList(cc));
17         System.out.println(b1);
18     }
19     public static void addAll(List<courses> list)
20     {
21         courses[] c = {new courses("1","首席技术官"),new courses("2","技术总监"),
22             new courses("3","首席架构师")};
23         list.addAll(Arrays.asList(c));
24     }
25 
26 
27 }
28 class courses
29 {
30     String name;
31     String id;
32     courses(String id, String name)
33     {
34         this.id = id;
35         this.name = name;
36     }
37     //重写equals方法的模板
38     public boolean equals(Object obj)
39     {
40         if(this==obj)//若当前对象等于参数obj,返回true
41             return true;
42         if(obj==null)//若参数等于null,返回false
43             return false;
44         if(!(obj instanceof courses))//若obj不等于courses,返回false
45             return false;
46 
47         //若以上编译都通过则说明当前obj是一个courses类型对象且不为null
48         courses c = (courses)obj;
49         //通过其name属性来对比
50         if(this.name==null)
51         {
52             if(c.name==null)
53                 return true;
54             else
55                 return false;
56         }
57         else
58         {
59             //比较其名称不为null的情况下名称是否相等
60             if(this.name.equals(c.name))
61                 return true;
62             else
63                 return false;
64         }
65     }
66 }
View Code

SetJudgeDemo(Set判断演示):

当调用HashSet的contains方法时其实是先调用每一个元素的HashCode方法返回哈希码,哈希码相等再调用它的equals方法判断,只有两个方法都返回true才认定包含某个元素

所以需要重写Set集合中对象类的HashCode方法和equals方法,

PS:eclipse中有生成equals与HashCode方法的模板,但是切记莫要过度依赖IDE工具

 

集合元素的判断

标签:

原文地址:http://www.cnblogs.com/gzc911/p/4934689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!