集合框架-ArrayList练习(去除ArrayList集合中的重复元素)

1 package cn.itcast.p3.arraylist.test;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5
6 import com.sun.org.apache.bcel.internal.generic.NEW;
7
8 import cn.itcast.p.bean.Person;
9 import cn.itcast.p4.hashset.demo.HashSetDemo;
10
11 /*
12 * 定义功能去除ArrayList中的重复元素
13 */
14 public class ArrayListTest2 {
15
16 public static void main(String[] args) {
17 // TODO Auto-generated method stub
18
19 ArrayList al = new ArrayList();
20 al.add(new Person("list1",21));
21 al.add(new Person("list2",22));
22 al.add(new Person("list3",23));
23 al.add(new Person("list4",24));
24 al.add(new Person("list4",24));
25 al.add(new Person("list4",24));
26
27 System.out.println(al);
28
29 al = getSingleElement(al);
30
31 System.out.println(al);
32
33 // System.out.println(al.remove(new Person("list2",22)));//remove 也是和equals相关
34
35 // System.out.println(al);
36
37 // singleDemo();
38 }
39
40 private static ArrayList getSingleElement_2(ArrayList al) {
41 // TODO Auto-generated method stub
42 return null;
43 }
44
45 /**
46 *
47 */
48 public static void singleDemo() {
49 ArrayList al = new ArrayList();
50 al.add("abc1");
51 al.add("abc2");
52 al.add("abc2");
53 al.add("abc1");
54 al.add("abc");
55 System.out.println(al);
56 al = getSingleElement(al);
57 System.out.println(al);
58
59
60 }
61 public static ArrayList getSingleElement(ArrayList al) {
62 //1,定义一个临时容器
63 ArrayList temp = new ArrayList();
64
65 //2,迭代al集合
66 Iterator it = al.iterator();
67
68 while(it.hasNext()) {
69 Object obj = it.next();
70 //3,判断被迭代到的元素是否在临时容器存在。
71 if (!temp.contains(obj)) {//contains也是依据equals,如果person类equals没有重写,比较的还是地址值
72 temp.add(obj);
73 }
74 }
75
76 return temp;
77 }
78
79
80
81 }

1 package cn.itcast.p.bean;
2
3 public class Person {
4 private String name;
5 private int age;
6
7
8 public Person() {
9 super();
10 // TODO Auto-generated constructor stub
11 }
12 public Person(String name, int age) {
13 super();
14 this.name = name;
15 this.age = age;
16 }
17
18 @Override
19 public int hashCode() {
20 System.out.println(this+".....hashCode");
21 // TODO Auto-generated method stub
22 return name.hashCode()+age*27;//age后面乘以一个数增大离散程度,减少返回哈希值相等的几率
23 //好比张三哈希值20 年龄40 李四哈希值30,年龄30 结果哈希值一样
24 //乘一个数后就不一样了离散程度变大了
25
26
27 //return 100;//会比较equals
28 }
29 public boolean equals(Object obj) {
30 //健壮性
31 if (this == obj) {//有可能传入相同的对象,可以先行判断是否为同一对象add(p) add(p)这种传入两次
32 return true;
33 }
34 if (!(obj instanceof Person)) {//判断是否为Person类型,类型不一致也不应该传入
35 throw new ClassCastException("类型错误");
36 }
37
38 // System.out.println(this+"...equals...."+obj);
39 Person p = (Person)obj;
40
41
42 return this.name.equals(p.name) && this.age == p.age;
43 }
44 public String getName() {
45 return name;
46 }
47 public void setName(String name) {
48 this.name = name;
49 }
50 public int getAge() {
51 return age;
52 }
53 public void setAge(int age) {
54 this.age = age;
55 }
56 //ctrl+alt+s 快捷构造set,get方法 初始化等
57 public String toString() {
58 return name+":"+age;
59 }
60 }
Person
集合框架-ArrayList练习(去除ArrayList集合中的重复元素)的更多相关文章
- 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素
import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...
- java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。
import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...
- Java 去除 ArrayList 集合中的重复元素
// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对 ...
- java代码实现将集合中的重复元素去掉
package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...
- Java删除ArrayList中的重复元素
Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...
- 如何使用 Java 删除 ArrayList 中的重复元素
如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...
- 去除List中的重复元素
/** * 去重list中的重复元素 * @param list * @return */ public static <T> List<T> removeRepeat(Lis ...
- 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...
随机推荐
- JAVA调用WebService接口(以调用第三方天气接口为例)
天气接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 1.打开项目文件目录路径文件夹,在当前文件夹打开cmd, ...
- 钉钉提供的内网穿透之HTTP穿透
此方法无需自行提供服务器和域名 官方地址:https://developers.dingtalk.com/document/resourcedownload/http-intranet-penetra ...
- 微信公众号开发用户授权登录报"redirect_uri 参数错误"错误
微信公众号开发 授权获取用户信息报错 "redirect_uri 参数错误" 出现这个情况要检查下 微信公众号配置了网页授权域名 在这里配置微信公众号redirect_uri中的域 ...
- JAVA判断是否是微信内置浏览器,是否是在微信内打开
/** * 通过请求头判断是否是微信内置浏览器,是否是在微信内打开 * @param request * @return */ @RequestMapping(value = "/hello ...
- [数学]高数部分-Part V 多元函数微分学
Part V 多元函数微分学 回到总目录 Part V 多元函数微分学 多元函数微分的极限定义 多元函数微分的连续性 多元函数微分的偏导数 z=f(x, y) 多元函数微分-链式求导规则 多元函数-高 ...
- CS5211替代PS8625|设计DP转LVDS转接板|替代PS8625方案
1.CS5211与PS8625功能概述 CS5211是一个eDP到LVDS转换器,配置灵活,适用于低成本显示系统.CS5211与eDP 1.2兼容,支持1通道和2通道模式,每通道速度为1.62Gbps ...
- Linux磁盘实用指令
磁盘情况查询 df/du 查询磁盘整体占用情况 df 指令:df -h 查询目录磁盘占用情况 du 基本语法 指令:du [选项] 指定目录 常用选项 指定目录不填则默认当前目录 选项 功能 -s 指 ...
- MySQL8.0.20安装详解
https://blog.csdn.net/yeb112233/article/details/106042867/ alter user root@localhost identified by ' ...
- mongdb分片
实验环境 主机 IP 虚拟通道 centos1 192.168.3.10 vmnet8 centos2 ...
- Oracle:使用PL-SQL登录时报ORA-12541:无监听程序的解决办法
背景: 在自己公司安装的Oracle,当时Oracle的监听地址都是写的公司的地址 后来由于项目需要,办公地点转移到了客户处, 大概有半年没有以sys用户登录数据库了. 最近在上下班途中学习Djang ...