package com.swift.lianxi;

import java.util.HashSet;
import java.util.Random; /*训练知识点:HashSet 训练描述
双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。
红色球号码从1—33中选择;蓝色球号码从1—16中选择.请随机生成一注双色球号码*/ public class Test4 { public static void main(String[] args) { Random ran = new Random();
HashSet<Integer> hong = new HashSet<Integer>();
while(hong.size()<6) {
int hongqiu=ran.nextInt(33)+1;
hong.add(hongqiu);
}
int lanqiu=ran.nextInt(16)+1;
System.out.print("双色球红球号码是: ");
for(Integer i:hong) {
System.out.print(i+" ");
}
System.out.print(" 双色球篮球号码是: ");
System.out.print(lanqiu+"");
}
}

上边是双色球

下边是使用HashSet 去重后合并

package com.swift.lianxi;

import java.util.ArrayList;
import java.util.HashSet; /*训练知识点:HashSet 训练描述
有2个ArrayList,元素如下: array1 = "a","b","a","c","d",array2 = "e","f","a","d","g",将两个集合重复项去除后合并成一个集合 操作步骤描述
1.创建ArrayList array1
2.使用add方法为array1存放对应的元素
3.创建ArrayList array2
4.使用add方法为array2存放对应的元素
5.创建HashSet用于存放去除重复的元素
6.遍历array1,获取到每个元素,将每个元素添加到HashSet中
7.遍历array2,获取到每个元素,将每个元素添加到HashSet中
8.输出HashSet中去除重复后的元素*/ public class Test3 { public static void main(String[] args) {
ArrayList<String> array1 = new ArrayList<String>();
array1.add("a");
array1.add("b");
array1.add("a");
array1.add("c");
array1.add("d");
HashSet<String> set = new HashSet<String>();
set.addAll(array1);
ArrayList<String> array2 = new ArrayList<String>();
array2.add("e");
array2.add("f");
array2.add("a");
array2.add("d");
array2.add("g");
set.addAll(array2);
for(String str:set) {
System.out.println(str);
} }
}

HashSet对象去重 复写 HashCode()方法和equals方法

package com.swift.lianxi;

import java.util.HashSet;
import java.util.LinkedHashSet; /*定义一个Student类,包含名称,年龄,性别(姓名,年龄,性别完全相同视为同一学生)
创建10个Student对象,至少有两个学生姓名,年龄,性别完全相同. 把这10个学生添加到Set集合中,不可以重复,
遍历Set集合打印学生信息,使用两种方式*/ public class Demo3 { public static void main(String[] args) { HashSet<Students> set = new LinkedHashSet<Students>();
set.add(new Students("zhangsan",20,"男"));
set.add(new Students("lisi",22,"男"));
set.add(new Students("wangwu",223,"男"));
set.add(new Students("zhaoliu",1,"男"));
set.add(new Students("tianqi",54,"男"));
set.add(new Students("wangermazi",209,"男"));
set.add(new Students("zhangsan",20,"男"));
set.add(new Students("zhangsan",20,"男"));
set.add(new Students("zhangsan",20,"男"));
set.add(new Students("zhangsan",20,"男"));
for(Students stu:set) {
System.out.println(stu.toString());
}
} } /**
* @author Advancing-Swift
*
*/
class Students{ private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Students(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public Students() {
super();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((sex == null) ? 0 : sex.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Students other = (Students) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (sex == null) {
if (other.sex != null)
return false;
} else if (!sex.equals(other.sex))
return false;
return true;
}
@Override
public String toString() {
return "Students [name=" + name + ", age=" + age + ", sex=" + sex + "]";
} }

ArrayList去重

package com.swift.kaoshi;

import java.util.Iterator;
import java.util.LinkedList; /*训练描述
已知数组存放一批QQ号码.QQ号码最长为11位,最短为5位
String[] strs = {"12345","67891",1"2347809933","98765432102","67891","12347809933"}
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,将list中所有元素用两种方式打印出来 操作步骤描述
1.定义QQ号码数组String[] strs
2.创建LinkedList
3.遍历strs获取每个qq号码
4.判断LinkedList是否已经存在这个qq号码
5.不存在这个qq号码则添加到LinkedList中
6.增强for遍历LinkedList
7.迭代器遍历LinkedList*/ /*
* ArrayList也可以存放唯一的内容,通过toArray()转成数组,再通过contains判断集合中是否存在
*/
public class Test1 { public static void main(String[] args) { String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"};
LinkedList<String> qqhao = new LinkedList<String>();
for(String str:strs) {
if(!qqhao.contains(str)) {
qqhao.add(str);
}
}
Iterator<String> it = qqhao.iterator();
while(it.hasNext()) {
String qq = it.next();
System.out.println(qq);
}
}
}

java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重的更多相关文章

  1. Java 重写hashCode 方法和equals方法

    package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致) ...

  2. 集合hashCode()方法和equals()办法

    1.哈希码:         Object中的HashCode方法会返回该对象的的内存真实地址的整数化表示,这个形象的不是真正抵制的整数值就是哈希码. 2.利用哈希码向集合中插入数据的顺序?     ...

  3. java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  4. Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  5. Java连载56-toSting方法和equals方法

    一.关于object中的toString​方法: 1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式. 2.在现实的开发过程中,Object里面的toS ...

  6. JAVA笔记7-Object类之toString方法和equals方法

    位于rt.jar\java\lang\Object.class Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个).如果在类声明中未使用extends关键字指明其基类, ...

  7. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  8. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  9. Java中使用BufferedReader的readLine()方法和read()方法来读取文件内容

    目标:读文件 编程时,有很多时候需要读取本地文件,下面介绍一下读取方式: 读单行文件 package com; import java.io.*; import java.util.ArrayList ...

随机推荐

  1. python编程零碎积累

    例行程序 def routine():     lastday = ''     while True:         day = datetime.datetime.now().strftime( ...

  2. suau 公约公倍

    8619 公约公倍 时间限制:500MS  内存限制:1000K 提交次数:475 通过次数:108 题型: 编程题   语言: G++;GCC Description  给定六个正整数a,b,c,d ...

  3. Unity脚本的生命周期 同一脚本/不同脚本/游戏对象激没激活/脚本激没激活,几种情况下的Awake,OnEnable,Start的执行顺序

    可以自己在Unity里面试一下 游戏对象在Hierarchy面板不是激活的,它的脚本没作用,脚本中的函数不会执行; 游戏对象在Hierarchy面板是激活的,脚本没激活,Awake会执行,OnEnab ...

  4. WSGI学习系列WSME

    Introduction Web Services Made Easy (WSME) simplifies the writing of REST web services by providing ...

  5. 跟我一起用python画你所想吧!

    0.库的引入 要想画图,我们先倒入两个库. import numpy as np import matplotlib.pyplot as plt 注:以下代码全都基于导入这两个库的前提下编写的. 1. ...

  6. ZK典型应用场景

    1. 数据发布/订阅--动态获取数据 2.Master选举 a). 利用Zk会保证无法重复创建一个已经存在的节点 b). 多个客户端同时创建,创建成功的即是master,并监控master节点,一旦m ...

  7. pat1050. String Subtraction (20)

    1050. String Subtraction (20) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Giv ...

  8. poj1092. To Buy or Not to Buy (20)

    1092. To Buy or Not to Buy (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  9. Quartz使用(4) - Quartz监听器Listerner

    1. 概述 Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知.类似于任务执行过程中的邮件.短信类的提醒.Quartz监听器主要有JobListener.Trigger ...

  10. C# params 动态参数

    public delegate void Action(params object[] args); 再简单的东西都要强迫自己记录了,前段时间硬盘坏了,资料全没了,也没有备份,太痛苦了,那么多资料全没 ...