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. C# list.toArray list与数组的转换

    void Start () { List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); li ...

  2. LeetCode 303.区域检索-数组不可变(accumulate()和for循环差异分析)

    给定一个整数数组  nums,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数 ...

  3. Linux证书登录,禁用密码

    如果验证成功的话就可以关闭密码登陆方式了, 编辑/etc/ssh/sshd_config, 将PasswordAuthentication改为no, ChallengeResponseAuthenti ...

  4. c#获取目录

    获取程序目录 string s = System.IO.Directory.GetCurrentDirectory(); Console.WriteLine(s);// C:\Users\r-\doc ...

  5. flexpager权限控制文件crossdomain.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cross-domain-policy SY ...

  6. Android基础Activity篇——Intent

    1.显式的Intent intent是用来各各活动之间切换的,还可以用来传递参数. 项目还是使用之前创建的ActivityTest项目,这里新建一个活动SecondActivity.java,并且勾选 ...

  7. Trouble Shooting的一些感想(实时补充)

    最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...

  8. u-boot分析(二)----工作流程分析

    u-boot分析(二) 由于这两天家里有点事,所以耽误了点时间,没有按时更新,今天我首先要跟大家说说我对于u-boot分析的整体的思路,然后呢我以后的博客会按照这个内容更新,希望大家关注. 言归正传, ...

  9. centos7 & centos6 rrdcache

    cat > /etc/systemd/system/rrdcached.service << EOF [Unit] Description=Data caching daemon f ...

  10. java:Java环境配置

    1.安装JDK开发环境 下载网站:http://www.oracle.com/ 2.配置环境变量: 对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe.java.exe.路径:C ...