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】734. Sentence Similarity 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 只修改区间起终点 日期 题目地址:https://le ...

  2. 【LeetCode】497. Random Point in Non-overlapping Rectangles 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/random-p ...

  3. 【LeetCode】290. Word Pattern 解题报告(Python)

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

  4. 【LeetCode】904. Fruit Into Baskets 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/fruit-in ...

  5. Back to Underworld(lightoj 1009)

    1009 - Back to Underworld    PDF (English) Statistics Forum Time Limit: 4 second(s) Memory Limit: 32 ...

  6. python-mysql-replication原理分析

    源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...

  7. 序列化之serialVersionUID

    serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性. 序列化ID起着关键的作用,java的序列化机制是通过在运行时判断类的serialVer ...

  8. 大二 mysql高级+html响应式+Java高级50道试题

    1.CSS3中过渡属性 transition-timing-function的值包括哪些 A. ease B. inline C. ease-in D. easeout 答案:A,C 解析:过渡属性 ...

  9. Linux-saltstack-2 saltstack的基本使用

    @ 目录 一.salt命令的基本使用 1.基本语法 例子: 2.salt的常用参数 (1)-S(大写):通过IP或者是网段匹配被管理主机 (2)-E:通过正则匹配主机 (3)-L: 匹配多个主机 (4 ...

  10. captcha_生成图片验证码并返回给前端展示

    使用pip install captcha 安装模块 import random import string import os import io from captcha.image import ...