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学习之可变不可变

    在python的数据类型中,整数.字符串.元组是不可变的:而列表.字典是可变的.所以不用C的思维来修改一个整数,它相当于重新定义了一个整数(原来的被覆盖掉了),名字和原来一样,但与前面的同名变量没有一 ...

  2. B P5 第十三届北航程序设计竞赛预赛

    https://buaacoding.cn/contest-ng/index.html#/188/problems 其实这题挺简单的. 注意到答案的大小最多是22 二分,check长度是mid的不同子 ...

  3. WSGI学习系列Paste

    Paste has been under development for a while, and has lots of code in it. The code is largely decoup ...

  4. MATLAB循环和函数定义,调用

    格式不要括号,最后有end for 循环变量 = 表达式1:表 2:表 3 表1:初值     表2:步长      表3:终值 求圆周率:π/4=1 - 1/3 + 1/5 -1/7+...+(-1 ...

  5. hduoj 2062Subset sequence

    Subset sequence Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. 解决MyEclipse报errors running builder ‘javascript validator’ on project

    今天导入项目的时候,报了以下错误 MyEclipse测到功能代码变化(保存动作触发)就报错: errors running builder ‘javascript validator’ on proj ...

  7. anaular js loadding效果

    以前用的jquery的时候,用ajax实现,比较好弄,下面是angularjs的方式: //body下面增加div <div data-loading></div> //dir ...

  8. Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

    遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c,seria ...

  9. 给主程序签名及第三方dll强签名

    给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     给程序添加强签名方法:   本文以Quartz.dll为例,使用vs Tools下的工具命令.   打开命令工具是这个样子,   ...

  10. easyui datagrid 表格中操作栏 按钮图标不显示

    jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染 解决办法: 使用解析器 Parser(解析器) $.parser.parse();       // 解析所有页面 $.par ...