Java.Util.List(List接口)

equals方法

        equals(Object o) 方法用来比较指定的对象与列表是否相等,当且仅当指定的对象也是一个列表、两个列表有相同的大小,并且两个列表中的所有相应的元素对相等时才返回 true。换句话说,如果所定义的两个列表以相同的顺序包含相同的元素,那么它们是相等的。该定义确保了 equals 方法在 List 接口的不同实现间正常工作。虽然equals方法并不常用,但是通过下面的例子可以了解一下:

 1 /**
 2  * @ClassName: TestListAdd
 3  * @Description: TODO(测试List的equals()方法)
 4  * @author hoojjack
 5  * @date 2017年5月12日 上午11:37:06
 6  * 
 7  */
 8 public class TestListAdd {
 9     private String name;
10 
11     public TestListAdd() {
12 
13     }
14 
15     public TestListAdd(String name) {
16         this.name = name;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26     
27     public static void main(String args[]){
28         TestListAdd test  =new TestListAdd("hujian");
29         List<TestListAdd> list = new ArrayList<TestListAdd>();
30         List<TestListAdd> list1 = new ArrayList<TestListAdd>();
31         list.add(test);
32         System.out.println("name="+test.getName());
33         //list.add(new TestListAdd());
34         test.setName("hoojjack");
35         list1.add(test);
36         System.out.println("name="+test.getName());
37         //list1.add(new TestListAdd());
38         System.out.println(list.equals(list1));
39         
40     }
41 
42 }

测试结果:

1 name=hujianjie
2 name=hoojjack
3 true

通过上面的代码与打印结果可以了解到:无论实现是否相同,只要是List的元素顺序和值相同,equals方法就认为两个比较对象相同,也就是说equals比较的是List中的元素而不是实现对象本身(list1,list2),这与String的equals方法类似。

如果将上面注释掉的33/37行代码放开,则测试的equals()返回为false。从结果发现两个列表各新增了一个同类型的对象,因此比较的是list中的对象的引用是否相同。

 

ListIterator方法:

 

 1 public static void main(String args[]){
 2         TestListAdd test  =new TestListAdd("hujian");
 3         List<TestListAdd> list = new ArrayList<TestListAdd>();
 4         List<TestListAdd> list1 = new ArrayList<TestListAdd>();
 5         list.add(test);
 6         list.add(new TestListAdd("123"));
 7         test.setName("hoojjack");
 8         list1.add(test);
 9         list1.add(new TestListAdd("456"));
10         ListIterator<TestListAdd> listIterator = list.listIterator();
11         //位置1
12         while(listIterator.hasPrevious()){
13             System.out.println(listIterator.previous().name);
14         }
15         //位置2
16         while(listIterator.hasNext()){
17             System.out.println(listIterator.next().name);
18         }
19     }

 

结果:

1 hoojjack
2 123

如果将listIterator.hasPrevious()放在位置1处,listIterator.has()放在位置2处,则会出现上述结果,也就是list.listIterator()每次返回list列表的起始位置,因此先调用hasPrevious()将返回false。如果想要上面的hasPrevious()能输出结果,可以在位置1处先调用listIterator = list.listIterator(list.size());获得list列表的最后一个元素的游标。

 

 1 public static void main(String args[]){
 2         TestListAdd test  =new TestListAdd("hujian");
 3         List<TestListAdd> list = new ArrayList<TestListAdd>();
 4         List<TestListAdd> list1 = new ArrayList<TestListAdd>();
 5         list.add(test);
 6         list.add(new TestListAdd("123"));
 7         test.setName("hoojjack");
 8         list1.add(test);
 9         list1.add(new TestListAdd("456"));
10         ListIterator<TestListAdd> listIterator = list.listIterator();
11         //位置1
12         while(listIterator.hasNext()){
13             System.out.println(listIterator.next().name);
14         }
15         //位置2
16         while(listIterator.hasPrevious()){
17             System.out.println(listIterator.previous().name);
18         }
19     }

结果:

1 hoojjack
2 123
3 123
4 hoojjack

 

转载于:https://www.cnblogs.com/hoojjack/p/6874257.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值