1. 1-50的随机数 用集合实现

生成50个[10,50]之间的随机数,然后按数字从小到大顺序输出。(这次用Map做)

输出格式 数字:出现次数

 1 //用ArraryList 集合来实现
 2
 3 public static void main(String[] args) {
 4         ArrayList list =new ArrayList();
 5
 6         for(int i=0;i<50;i++){
 7             list.add(i, 0);
 8         }
 9
10
11         for (int i=0;i<50;i++){
12             Random rand =new Random();
13             int randnum=rand.nextInt(40)+10;
14             int index=(int)list.get(randnum);
15             list.set(randnum, ++index);
16
17
18         }
19
20         for (int i=0;i<list.size();i++){
21             if((int)list.get(i)!=0)
22             System.out.println("nums"+i+" have "+list.get(i)+ " times ");
23                 }
24
25     }
26 //用map集合来实现
27
28 public static void main(String[] args) {
29         HashMap map=new HashMap();
30
31         for(int i=0;i<50;i++){
32             Random random=new Random();
33             int randnum=random.nextInt(40)+10;
34
35
36
37             if(map.containsKey(randnum)){
38                 int index =(int)map.get(randnum)+1;
39                 map.put(randnum,index);
40             }else{
41                 map.put(randnum,1);
42             }
43         }
44         for (int i=0;i<50;i++){
45             if(map.get(i)!=null)
46             System.out.println("nums"+i+" have "+map.get(i)+ " times ");
47                 }
48
49     }
50 

2. set根据什么集合判断重复,总结规则

Set判断是否重复是根据需要添加的类中的hashcode和equal方法确定的。
Object 类 的equals 比较的是内存地址
String类的 equals比较的是值
其他类可以通过API查询。只作这两个比较。

/*举个例子,我们重写一下Animal 类的HashCode和equals方法就可以达到效果,只要Animal的名字相同,返回的hashcode就会相同,认定相等
在这里我通过Car类和Animal类的作比较*/
  1 // car类
  2 public class Car implements Comparable{
  3     private  String name ;
  4     private  int speed;
  5
  6
  7     public Car(){}
  8     public Car(String name ){
  9         this.name=name;
 10
 11         }
 12
 13
 14     public String getName() {
 15         return name;
 16     }
 17
 18     public void setName(String name) {
 19         this.name = name;
 20     }
 21
 22     public int getSpeed() {
 23         return speed;
 24     }
 25
 26     public void setSpeed(int speed) {
 27         this.speed = speed;
 28     }
 29
 30     public void getCar(String name,int speed){
 31         System.out.println("CAR NAME:"+name+" SPEED is "+speed);
 32     };
 33
 34     @Override
 35     public int compareTo(Object o){
 36         Car car=(Car)o;
 37         return this.name.compareTo(car.getName());
 38     }
 39     @Override
 40     public String toString() {
 41         return "Car [name=" + name + ", speed=" + speed + "]"+"\n";
 42     }
 43
 44     //animal 类
 45 public class Animal {
 46 private String kind;
 47
 48     private String name;
 49
 50     public Animal(){
 51
 52     }
 53
 54     public Animal(String kind, String name){
 55
 56         this.kind = kind;
 57         this.name = name;
 58
 59     }
 60
 61     public String getKind() {
 62         return kind;
 63     }
 64
 65     public void setKind(String kind) {
 66         this.kind = kind;
 67     }
 68
 69     public String getName() {
 70         return name;
 71     }
 72
 73     public void setName(String name) {
 74         this.name = name;
 75     }
 76
 77     @Override
 78     public boolean equals(Object obj) {
 79         Animal animal = (Animal)obj;
 80         return this.name.equals(animal.getName());
 81     }
 82
 83     @Override
 84     public int hashCode() {
 85         return this.name.hashCode();
 86     }
 87
 88     @Override
 89     public String toString() {
 90         return this.name + ":" + this.kind;
 91     }
 92
 93
 94 }
 95
 96
 97 }
 98 //Test 类
 99
100 public class HashTest {
101     public static void main(String[] args) {
102
103         HashSet set = new HashSet();
104
105         Car car1 = new Car("宝马");
106         Car car2 = new Car("玛莎拉蒂");
107         Car car3 = new Car("宝马");
108
109         Animal an1=new Animal("cat","cat");
110         Animal an2=new Animal("dog","dog");
111         Animal an3=new Animal("tiger","cat");
112
113         set.add(car1);
114         set.add(car2);
115         set.add(car3);
116         set.add(an1);
117         set.add(an2);
118         set.add(an3);
119         System.out.println("-----Car类,没有重写equals和hashcode方法------");
120         System.out.println("car1: "+car1.hashCode());
121         System.out.println("car2:  "+car2.hashCode());
122         System.out.println("car3:  "+car3.hashCode());
123         System.out.println("----animal类,重写了equals和hascode方法-------");
124
125         System.out.println("an1:  "+an1.hashCode());
126         System.out.println("an2:  "+an2.hashCode());
127         System.out.println("an3:  "+an3.hashCode());
128
129
130     }
131 }

 

PS:可以看到 重写了equals方法后,只要名字相同,hashcode得出来的就相同。

转载于:https://www.cnblogs.com/ithuhui/p/5921184.html

java基础 - 集合Collection相关推荐

  1. java基础---集合collection的方法介绍

    package com.henu;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; / ...

  2. java基础—集合框架

    java基础-集合框架 JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java. ...

  3. Java基础---集合的概述---list、set、map、泛型、collections

    集合的概述 单列集合的体系: Collection 单列集合的顶层接口 List Collection的子接口,增加了一些特有的方法,有序 可以重复 有索引 ArrayList 底层采用的数组结构实现 ...

  4. JAVA基础+集合+多线程+JVM

    1. Java 基础 1.1. 面向对象和面向过程的区别 面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候 等一般采用面向过程开发.但是 ...

  5. 【CXY】JAVA基础 之 Collection

    概述: 1.Collection java集合框架的根级接口(root interface) 2.常用子接口:List.Set.Queue,注意map是自成体系的 3.方法:新增.包含.遍历.交集.判 ...

  6. (阿里offer)春招知识点总结1:java基础+集合+并发+jvm+ssm

    写在前面:大量总结不是系统的总结,而是作者本人根据自己情况总结的,许多我很清楚的地方就不在提及,大量源码也均未提及,尤其是框架的总结提及很浅.仅作为自己短期技术栈的一个总结,只作为参考,不是一定正确的 ...

  7. java之集合Collection之List接口总结

    总结自韩顺平老师的零基础30天学 JAVA 目录 一.集合的框架体系 1.java的集合体系主要可分为两大类:Collection和Map集合. 2.Collection和Map的区别 二.Colle ...

  8. Java基础学习-Collection体系结构和迭代测试

    package Collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterato ...

  9. 黑马程序员--java基础--集合(三)

    -------android培训.java培训.期待与您交流! ---------- 第八部分:Collections工具类 Collections是集合框架的工具类,里面存在能对List集合容器操作 ...

最新文章

  1. 新手学习编程的最佳方式是什么?
  2. java中byte的范围计算
  3. 组策略中Run logon scripts synchronously和Run startup scripts asynchronously的区别
  4. Gartner:2021全球安全和风险支出将超1500亿美元
  5. 【kafka】kafka BindException: Address already in use 一个失误或者愚蠢的问题
  6. 按键精灵手机mysql_mysql,按键精灵,读取写入
  7. MongoDB数据同步工具之 MongoShake
  8. mysql pxc 安装_MYSQL PXC 集群安装
  9. 「3D建模」建模中什么是重新拓补?为什么要拓补,有何作用?
  10. 新特汽车在重庆“复活”:打造新品牌“电动屋”,已获网约车牌照
  11. android 4.4优化build.prop,Androidbuild.prop详细优化
  12. 软件测试的类型有哪些?
  13. 前端实现批量下载图片(自己的服务器需设置可跨域请求)
  14. E212: Can‘t open file for writing:权限不够或者没有上级目录
  15. 面试姊妹篇4:常见的Java多线程面试题
  16. 神经网络基础知识--感知器,S型神经元,梯度下降法,神经网络架构
  17. [BZOJ1233][Usaco2009Open]干草堆tower(单调队列优化)
  18. Linux下mysql 登录退出及常用命令
  19. 一个留学生的自白:清华vsMIT
  20. 快速获取雪碧图的图标样式插件 - gulp-css-spriter教程

热门文章

  1. PyQt5 Designer中ui格式转py格式
  2. 【STC单片机学习】第一课:学习介绍
  3. C51的1602LCD液晶显示
  4. android 荣耀8驱动程序,华为荣耀8怎么连电脑?荣耀8无法识别USB设备的解决方法
  5. 弧度与角度的转化公式
  6. 功能全面的格式转换软件-格式工厂提供下载
  7. Web Tours自带示例网站无法打开的解决方案
  8. Python Flask中的jsonify
  9. 很多人说SEO是忽悠,大牛们都放弃SEO行业?
  10. php 数字百分比计算器,PHP 算法 计算器