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. 【LeetCode】494. Target Sum 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  2. Git从远程仓库克隆

    首先,登陆GitHub,创建一个新的仓库,名字叫gitskills 勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个READM ...

  3. JavaScript交互式网页设计 • 【第6章 初识jQuery】

    全部章节   >>>> 本章目录 6.1 jQuery概述 6.1.1 初识 jQuery 6.1.2 jQuery 基本功能 6.1.3 搭建 jQuery 开发环境 6.1 ...

  4. Java练习小题_猴子吃桃问题分别用for循环和while循环实现程序。

    要求说明: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时, ...

  5. [学习笔记] Oracle创建用户、分配权限、设置角色

    创建用户 create user student --用户名 identified by "123456" --密码 default tablespace USERS --表空间名 ...

  6. [学习笔记] SpringBoot 之 Helloworld

    创建项目 IDEA / File / New / Project / Spring Initalizr / Next Group: com.wu 公司官网域名反写 Artifact: hellowor ...

  7. CSS实战 模拟 新闻列表

    总结:所使用的知识点:1.padding应用以及box-sizing: border-box自动内减撑大的盒子 2.ul>li 的使用,去除黑圆圈 3.a标签的使用,去除默认样式<下划线& ...

  8. Java|从Integer和int的区别认识包装类

    https://blog.csdn.net/darlingwood2013/article/details/96969339?utm_medium=distribute.pc_relevant.non ...

  9. [ python应用 ] python递归搜索文件,支持搜索多个文件,支持自定义处理动作

    写了一个PyQT界面的版本:https://github.com/LongchuanYu/pyqt_project PATH = r'E:\MyDocument\新しいフォルダー\' # 要搜索的目录 ...

  10. 第10组 Alpha冲刺 (3/6)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/13971668.html ·作业博客:https://edu.cnblogs.co ...