List的contains方法

 

一个非常勤奋好学的同事遇到一个问题...

list的contains中包含String数组,而且去做contains()方法的时候都是不包含的结果.很是郁闷.

 

conclusion:

List的contains(Object o),对应的是匹配的==值,是比较的地址值.所以会出现value值相同的时候,未必是包含的;

ArrayList中的contains(Object o),方法判断的是hash值是否相同,先比较地址值,相等包含;不等的情况下,再去比较值是否相同.值相同依旧返回相同;so.....

 

在进行contains进行比较的时候,要看下,使用的是list的contains方法,还是ArrayList的contains()方法

 

 

 

 

附一个连接,挺好的.给博主加加油.

### 回答1: Java中的List.contains()方法用于检查列表中是否包含指定元素。如果包含,则返回true,否则返回false。该方法的语法如下: boolean contains(Object o) 其中,参数o是要检查的元素。如果o是列表中的元素,则返回true,否则返回false。该方法的时间复杂度为O(n),其中n是列表的大小。 ### 回答2: Java中的List是一种有序的集合类,它可以存储多个元素,并且可以根据索引访问每一个元素。contains方法List类的一个成员方法,用于判断一个List中是否包含指定的元素。下面是有关Java List contains方法的详细说明: 1. contains方法的语法 contains方法的语法如下: public boolean contains(Object o) 其中,参数o表示要查找的元素。 2. contains方法的返回值 contains方法的返回值为布尔类型,如果List包含参数o所表示的元素,则返回true;否则返回false。 3. contains方法的实现原理 在Java中,List是一种基于数组或链表实现的数据结构,因此contains方法的实现原理也与具体的List实现方式有关。对于基于数组实现的Listcontains方法可以通过线性搜索的方式遍历数组来实现。具体来说,它遍历List中的每一个元素,逐个与参数o进行比较,直到找到一个与之相等的元素或者遍历完整个List。对于基于链表实现的Listcontains方法可以通过遍历链表的方式实现。具体来说,它从链表的头部开始遍历,逐个与参数o进行比较,直到找到一个与之相等的元素或者遍历完整个链表。 4. contains方法的使用示例 下面是一个使用contains方法的示例: List<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); list.add("orange"); boolean result1 = list.contains("apple"); // 返回true boolean result2 = list.contains("grape"); // 返回false 在这个示例中,我们创建了一个包含三个字符串的List,并使用contains方法判断List中是否包含了"apple"和"grape"这两个元素。由于List包含"apple",因此result1的值为true;而由于List中不含"grape",因此result2的值为false。 综上所述,Java List contains方法是用于判断一个List中是否包含指定元素的方法,它的实现原理与具体的List实现方式有关,使用时只需传入要查找的元素即可。 ### 回答3: Java中的List是一种基础的数据结构,它允许我们在一个可变长度的数组中存储一组元素,并提供了很多可用的方法来对这些元素进行操作。其中contains方法就是其中之一。 contains方法List接口中定义的一个方法,其作用是用于判断当前列表是否包含指定的元素。它的参数是要查找的元素,返回值是一个布尔值,如果当前列表包含指定的元素,则返回true,否则返回false。 contains方法的使用非常简单,我们可以通过以下代码来实现: List<String> strings = new ArrayList<>(); strings.add("one"); strings.add("two"); strings.add("three"); if (strings.contains("two")) { System.out.println("List contains 'two'"); } else { System.out.println("List does not contain 'two'"); } 上述代码首先创建了一个List<String>实例,并向其中添加了三个元素:one、two、three。接着使用contains方法来检查当前列表是否包含 "two" 元素,然后输出检查结果。 需要注意的是,contains方法比较两个元素是否相等时,是调用元素的equals方法进行比较的。因此,如果我们需要比较自定义类型的对象时,需要在自定义类中实现equals方法,并保证该方法按照自定义规则来比较对象之间的相等性。 此外,在使用contains方法时,我们需要注意它的时间复杂度。对于ArrayList这样的顺序列表,contains方法的时间复杂度是O(n),即平均需要遍历列表的一半来判断元素是否存在;而对于LinkedList这样的链表,contains方法的时间复杂度是O(n),即平均需要遍历整个链表来判断元素是否存在。因此,在处理大规模数据时,我们应该尽量避免使用contains方法,以减少其时间复杂度对程序性能的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值