集合元素的判断

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

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工具

 

Map:

判断某个序列中某个元素的位置:indexOf、lastIndexOf

 1 import java.util.*;
 2 class containsKeyOrValue 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         Map< String, student> map = new HashMap< String, student>();
 7         map.put("1",new student("1","首席技术官"));
 8         System.out.println(map.containsKey("1"));//判断学生映射表中是否包含指定的key值
 9         //map.containsValue(new student(null,"首席技术官"));//map的containsValue方法需重写序列中对应的对象的HashCode方法和equals方法
10     }
11 }
12 
13 
14 class student
15 {
16     String id;
17     String name;
18     student(String id, String name)
19     {
20         this.id = id;
21         this.name = name;
22     }
23 }
View Code

 

Conllections:

Contains也是java集合框架的成员,但提供了很多静态的方法,如对集合排序的sort方法

转载于:https://www.cnblogs.com/gzc911/p/4934689.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值