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集合中的重复元素)的更多相关文章

  1. 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素

    import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...

  2. java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。

    import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...

  3. Java 去除 ArrayList 集合中的重复元素

    // One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...

  4. Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator

    为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对 ...

  5. java代码实现将集合中的重复元素去掉

    package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...

  6. Java删除ArrayList中的重复元素

    Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...

  7. 如何使用 Java 删除 ArrayList 中的重复元素

    如何使用 Java 删除 ArrayList 中的重复元素 (How to Remove Duplicates from ArrayList in Java) Given an ArrayList w ...

  8. 去除List中的重复元素

    /** * 去重list中的重复元素 * @param list * @return */ public static <T> List<T> removeRepeat(Lis ...

  9. 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)

    最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...

随机推荐

  1. SpringBoot整合openoffice实现word文档的读取和导入及报错处理

    先安装openoffice4 Linux系统安装参考:https://www.cnblogs.com/pxblog/p/11622969.html Windows系统安装参考:https://www. ...

  2. 【LeetCode】973. K Closest Points to Origin 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 日期 题目地址:https://leetco ...

  3. Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations

    目录 概 主要内容 Locatello F., Bauer S., Lucic M., R"{a}tsch G., Gelly S. Sch"{o}lkopf and Bachem ...

  4. 解决opencv:AttributeError: 'NoneType' object has no attribute 'copy'

    情况一: 路径中有中文,更改即可 情况二:可以运行代码,在运行结束时显示 AttributeError: 'NoneType' object has no attribute 'copy' 因为如果是 ...

  5. Java Web程序设计笔记 • 【第7章 会话跟踪技术】

    全部章节   >>>> 本章目录 7.1 会话跟踪技术概述 7.1.1 为什么需要会话跟踪 7.1.2 会话的状态和跟踪 7.1.3 会话跟踪技术 7.1.4 会话跟踪工作流程 ...

  6. 涂鸦智能 dubbo-go 亿级流量的实践与探索

    涂鸦智能 dubbo-go 亿级流量的实践与探索 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力.而 dubbo-go 在 ...

  7. redis-ha手动切换slave节点为master

    仅做个人记录,请慎重参考!! 问题描述:使用redis-ha启动了3个pod,现在还有一个pod正常运行,并且为slave(理论上第一个起来的pod应该为master) 通过info命令查看下图 尝试 ...

  8. SpringCloud创建Eureka Client服务注册

    1.说明 本文详细介绍微服务注册到Eureka的方法, 即Eureka Client注册到Eureka Server, 这里用任意一个Spring Cloud服务为例, 比如下面已经创建好的Confi ...

  9. 基于GO语言实现的固定长度邀请码

    1. 选取数字加英文字母组成32个字符的字符串,用于表示32进制数. 2. 用一个特定的字符比如`G`作为分隔符,解析的时候字符`G`后面的字符不参与运算. 3. LEN表示邀请码长度,默认为6. g ...

  10. Linux 使用 split 命令分割文件

    使用方法: $ split --help 用法:split [选项]... [输入 [前缀]] 将输入内容拆分为固定大小的片段并输出到"前缀aa"."前缀ab" ...