-
java list查找元素是否存在_java 如何判断集合中是否存在某个元素——contains()?...
2021-02-26 08:40:44List 有方法contains可以判断出List中是否已经有这个值。...1.List的contains(obj)方法实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素,然后再调用每个元素的equals()方法去跟contains(...List 有方法contains可以判断出List中是否已经有这个值。
如果想去重复可以使用HashSet去重复。
List list = new ArrayList(new HashSet(a));
1.List的contains(obj)方法
实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素,然后再调用每个元素的equals()方法去跟contains()方法中的参数进行比较,如果有一个元素的equals()方法返回true则contains()方法返回true,否则所有equals()方法都不返回true,则ontains()方法则返回false。因此,重写了Course类的equals()方法,否则,testListContains()方法的第二条输出为false。
2.Set的Contains(obj)方法
当调用HashSet的contains(Object obj)方法时,其实是先调用每个元素的hashCode()方法来返回哈希码,如果哈希码的值相等的情况下再调用equals(obj)方法去判断是否相等,只有在这两个方法所返回的值都相等的情况下,才判定这个HashSet包含某个元素。因此,需重写Course类的hashCode()方法和equals()方法。
3. Map中是否包含指定的Key和Value
在Map中,用containsKey()方法,判断是否包含某个Key值;用containsValue()方法,判断是否包含某个Value值。
注:跟List中的Contains()方法一样,Map中的ContainsValue()方法也需要调用某个Value值的equals()方法,去和参数对象进行比较,如果匹配成功,返回结果为true,说明在Map中的Value值确实包含参数对象。因此,需要重写实体类的equals()方法。
原文链接:https://blog.csdn.net/weixin_38670122/article/details/80570956
-
java list判断元素_java 如何判断集合中是否存在某个元素——contains()?
2021-02-12 14:33:59List 有方法contains可以判断出List中是否已经有这个值。...1.List的contains(obj)方法实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素,然后再调用每个元素的equals()方法去跟contains(...List 有方法contains可以判断出List中是否已经有这个值。
如果想去重复可以使用HashSet去重复。
List list = new ArrayList(new HashSet(a));
1.List的contains(obj)方法
实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素,然后再调用每个元素的equals()方法去跟contains()方法中的参数进行比较,如果有一个元素的equals()方法返回true则contains()方法返回true,否则所有equals()方法都不返回true,则ontains()方法则返回false。因此,重写了Course类的equals()方法,否则,testListContains()方法的第二条输出为false。
2.Set的Contains(obj)方法
当调用HashSet的contains(Object obj)方法时,其实是先调用每个元素的hashCode()方法来返回哈希码,如果哈希码的值相等的情况下再调用equals(obj)方法去判断是否相等,只有在这两个方法所返回的值都相等的情况下,才判定这个HashSet包含某个元素。因此,需重写Course类的hashCode()方法和equals()方法。
3. Map中是否包含指定的Key和Value
在Map中,用containsKey()方法,判断是否包含某个Key值;用containsValue()方法,判断是否包含某个Value值。
注:跟List中的Contains()方法一样,Map中的ContainsValue()方法也需要调用某个Value值的equals()方法,去和参数对象进行比较,如果匹配成功,返回结果为true,说明在Map中的Value值确实包含参数对象。因此,需要重写实体类的equals()方法。
原文链接:https://blog.csdn.net/weixin_38670122/article/details/80570956
-
【Java】去除List中的重复值并按照从小到大排列
2017-10-02 11:57:18一、前言 前几天,给一个同事写接口,他的要求是,给我传来一个List ids,... 遍历List集合判断是否在另一个集合中存在,赋值给另一个集合 赋值给Set结合,再返回list集合 【知识补充】可能有一些朋友对Set不熟悉一、前言
前几天,给一个同事写接口,他的要求是,给我传来一个
List<String> ids
,这个里面可能有重复的id,需要帮她去重。我想这个用循环是比较麻烦的,有什么简单的吗?然后就找到了下面的几个方法,总结一下。二、去重思路
两个思路:
1.遍历List集合判断是否在另一个集合中存在,赋值给另一个集合
2.赋值给Set结合,再返回list集合
【知识补充】可能有一些朋友对Set不熟悉,不了解Set是什么?
Set是Collection容器的一个子接口,它不允许出现重复元素,当然也只允许有一个null对象。在这里大家了解,它里面不能放重复的信息就行了。
三、去重方法demo
- 方法一: 赋值给另一个list2,判断list2是否含有要添加的值(最笨)
这里判断使用的是,
list2.contains(字段)
。@Test public void testMap(){ List<String> list = new ArrayList<String>(); list.add("6"); list.add("2"); list.add("3"); list.add("1"); list.add("7"); list.add("5"); list.add("2"); list.add("3"); List<String> newList = new ArrayList<String>(); for (String cd:list) { if(!newList.contains(cd)){ newList.add(cd); } } System.out.println( "去重后的集合: " + newList); }
结果:可以看出,使用这种方法,可以达到去重的效果,但是集合中是数据依旧是乱的,没有排序。
去重后的集合: [6, 2, 3, 1, 7, 5]
- 方法二、使用
set.add(字段)
来判断能否添加到set中,如果可以添加,也向新的list.add()
中添加一份,不打乱顺序。
@Test public void testMap(){ List<String> list = new ArrayList<String>(); list.add("6"); list.add("2"); list.add("3"); list.add("1"); list.add("7"); list.add("5"); list.add("2"); list.add("3"); Set set = new HashSet(); List newList = new ArrayList(); for (String cd:list) { if(set.add(cd)){ newList.add(cd); } } System.out.println( "去重后的集合: " + newList); }
结果:同样是达到去重,但是没有排序。
去重后的集合: [6, 2, 3, 1, 7, 5]
- 方法三、使用Set去重
@Test public void testMap(){ List<String> list = new ArrayList<String>(); list.add("6"); list.add("2"); list.add("3"); list.add("1"); list.add("7"); list.add("5"); list.add("2"); list.add("3"); //set 去重 Set set = new HashSet(); List newList = new ArrayList(); set.addAll(list); newList.addAll(set); System.out.println( "去重后的集合: " + newList); }
结果:网上有朋友说使用HashSet存储是无顺序的,但是小编亲测,是有顺序的。有待考证
去重后的集合: [1, 2, 3, 5, 6, 7]
网上还有一个朋友说,使用treeSett,可以去重且按照自然顺序排列
@Test public void testMap(){ List<String> list = new ArrayList<String>(); list.add("6"); list.add("2"); list.add("3"); list.add("1"); list.add("7"); list.add("5"); list.add("2"); list.add("3"); //去重并且按照自然顺序排列 List newList = new ArrayList(new TreeSet(list)); System.out.println( "去重后的集合: " + newList); }
四、小结
没有百不到的,没有G不到的!
只要自己有想法,百度和谷歌都会有相似的方案,这个就是现在互联网的特点,小编总结的这些东西也是从网上找到的。加油! -
Java 集合7 练习——去除List中的重复元素
2018-09-04 09:47:352.遍历原容器,将遍历到的元素到临时容器中去判断,是否存在 3.如果存在不存储到临时容器中,如果不存在,存储到临时容器中 4.遍历结束后,临时容器中的元素就是惟一性的元素 5.如果需要将这些惟一性的...列表(List)是可以允许出现重复的元素, 但是如果现在就要求使用List并且集合中不存在重复的元素
需求:要求容器中的元素保证唯一性
思路
1.先创建一个临时容器,用于存储惟一性的元素
2.遍历原容器,将遍历到的元素到临时容器中去判断,是否存在
3.如果存在不存储到临时容器中,如果不存在,存储到临时容器中
4.遍历结束后,临时容器中的元素就是惟一性的元素
5.如果需要将这些惟一性的元素保存在原容器中,只要将原容器清空,将临时容器中的元素添加到原容器中
代码:package Collection; import java.util.*; /* 使用List 但是要保证集合中的元素的惟一性 需求:去除 List 集合中的重复 */ public class SingleElemen_List { public static void main(String[] args){ List list = new ArrayList(); list.add("itcast1"); list.add("itcast2"); list.add("itcast1"); list.add("itcast2"); list.add("itcast1"); getSingleElement(list); System.out.println(list); } //创建去除重复元素的函数 public static void getSingleElement(List list) { //1.创建临时容器 List temp = new ArrayList(); //2.遍历原容器 for (Iterator it = list.iterator(); it.hasNext(); ) { Object obj = it.next(); //3.判断临时容器中是否存在遍历到的元素 if (!temp.contains(obj)) { temp.add(obj); } } //4.遍历结束,所有惟一性的元素都已经存储在了临时容器中 //5.清空原容器,降临时容器中的元素添加到原容器中 list.clear(); list.addAll(temp); } }
运行结果:[itcast1, itcast2]
List 集合去重复的关键:contains() :判断是否包含的底层代码其实是使用了 equals() 方法
当元素不是字符串而是自定义类时:包含的判断依据是自定义类的 equals() 定义的规则
存储自定义的学生对象,相等的规则是:名字和年龄相同list.add(new Student("Lisi",20)); list.add(new Student("Zhangshan",25)); list.add(new Student("Lisi",20)); list.add(new Student("Wangwu",18));
运行结果:[Lisi 20, Zhangshan 25, Wangwu 18]
-
Java基础知识强化之集合框架笔记35:List练习之产生10个1~20之间的随机数(要求:随机数不能重复)...
2015-10-05 16:38:001. 需求:获取10个1-20之间的随机数,要求不能重复用数组实现,但是数组的长度是固定的... •判断统计遍历是否小于10 是:先产生一个随机数,判断该随机数在集合中是否存在。 如果不存在:就添加,统计变量++。 ... -
java获取10位随机数_获取10个1-20之间的随机数,要求不能重复
2021-01-28 23:03:35API ----集合 ----泛型 ----List练习 * 用数组实现,但是数组的长度是固定的,长度不好确定。 * 所以我们使用集合实现。 * ... * 是:先产生一个随机数,判断该随机数在集合中是否存在。 *... -
Java基础知识-去重
2017-01-18 17:09:00判断所遍历的元素是否已经存在于resultList,如果不存在,则将这个元素加入到resultList中,否则不加。 通过判断将第二次出现的相同元素过滤掉,只有第一次出现的元素才会被加入到resultList中,这样就得到了sou... -
java 集合框架 题_java习题-集合框架-泛型
2021-02-27 15:06:412,遍历原容器,将遍历到的元素到临时容器中去判断,是否存在。3,如果存在,不存储到临时容器,如果不存在,存储到临时容器中。4,遍历结束后,临时容器中存储的就是唯一性的元素。5,如果需要将这些唯一性的元素... -
LeetCode1394.找出数组中的幸运数(Java)
2020-10-31 20:57:07题目: 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。...最后遍历list,判断是否有幸运数。 class Solution { public int findLucky(int[] arr) { if (arr -
java习题-集合框架-泛型
2018-05-03 15:44:052,遍历原容器,将遍历到的元素到临时容器中去判断,是否存在。3,如果存在,不存储到临时容器,如果不存在,存储到临时容器中。4,遍历结束后,临时容器中存储的就是唯一性的元素。5,如果需要将这些唯一性的元素... -
JAVA 面试题总结——基础2(待补充)
2020-05-11 19:56:39List和Set的区别 List特点:元素有放入顺序,元素可重复; Set特点:元素无放入顺序,不可重复,重复的元素会覆盖掉。...向hashSet中add()元素时,判断元素是否存在的依据不仅要比较hash值,同时还要结合equles方法比 -
Java提高篇(29)--(集合Set接口)
2017-10-08 14:55:49一、Set接口的定义 Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素 Set接口的主要方法与...2个常用方法:hasNext方法表示判断是否还有元素可以迭代 ne -
在java里的集合的知识点
2011-04-22 22:02:00Object都是装箱,自动装箱,在集合里可以添加数据类型,集合重写,contain判断元素是否存在。Iterator迭代器。用于遍历。hasNext(). 列表list:线性方式存储:数组和向量,链表,堆栈,队列。可以用下标访问元素... -
Java从零开始学二十二(集合Set接口)
2015-02-25 23:16:00一、Set接口的定义 Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素 ...2个常用方法:hasNext方法表示判断是否还有元素可以迭代 next... -
JAVA面试题最全集
2010-03-13 13:09:10判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和... -
日常收获(持续更新)
2020-08-29 11:43:561.Java中利用Set判断List集合中是否有重复元素 list集合允许存在重复元素,但是set集合不允许,所以我们可以将list集合转换为set集合。循环遍历的话,占用资源,浪费时间 //这是我们定义的数组 List<String> ... -
《Java Web开发实战1200例(第I卷)》(清华出版.卢瀚.王春斌).part2 高清完整PDF版
2016-06-13 12:06:47实例199 利用标签遍历List集合的元素 实例200 利用JSTL标签导入用户注册协议 8.2 JSTL I18N标签库 275 实例201 利用JSTL标签设置请求的字符编码 实例202 利用JSTL标签实现国际化 实例203 利用显示所有地区的... -
hashCode()
2020-03-13 14:49:48当新加入一个元素中,首先会在集合中遍历是否存在旧元素和新元素值相等,即用equal()函数。 public boolean equals(Object obj){ return (this == obj); } 很明显是对两个对象的地址值进行的比... -
求2个集合的交集
2014-05-26 18:49:03判断是否含有value: ContainsValue(value) 遍历hashtable: Dim de As DictionaryEntry '泛型类 For Each de In hstl console.write(de.key & de.value) Next de hashtable不支持通过value取key. 求2个集合的... -
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串
2017-05-06 20:26:52oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。... -
asp.net知识库
2015-06-18 08:45:45如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/...
-
这里是最近重新学习Spring boot关于注入相关的经验博客,特此记录一下:
-
linux基础入门和项目实战部署系列课程
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
【RabbitMQ】消息可靠性投递(三)Queue存储消息
-
力扣7. 整数反转
-
产品经理的情报收集与分析.pdf
-
鸿蒙系统Harmonyos源码架构分析-第1期第2课
-
espnetv2
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
【RabbitMQ】消息可靠性投递(四)Queue-->Consumer
-
光伏并网matlab仿真模型.zip
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
Liunx安装Nginx
-
MySQL Router 实现高可用、负载均衡、读写分离
-
Unity RUST 逆向安全开发
-
整合营销传播系统.pdf
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
13款手机浏览器分析(Android).pptx
-
凡客诚品 微博营销实践暨品牌创新.ppt