java基础 - 集合Collection
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相关推荐
- java基础---集合collection的方法介绍
package com.henu;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; / ...
- java基础—集合框架
java基础-集合框架 JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java. ...
- Java基础---集合的概述---list、set、map、泛型、collections
集合的概述 单列集合的体系: Collection 单列集合的顶层接口 List Collection的子接口,增加了一些特有的方法,有序 可以重复 有索引 ArrayList 底层采用的数组结构实现 ...
- JAVA基础+集合+多线程+JVM
1. Java 基础 1.1. 面向对象和面向过程的区别 面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候 等一般采用面向过程开发.但是 ...
- 【CXY】JAVA基础 之 Collection
概述: 1.Collection java集合框架的根级接口(root interface) 2.常用子接口:List.Set.Queue,注意map是自成体系的 3.方法:新增.包含.遍历.交集.判 ...
- (阿里offer)春招知识点总结1:java基础+集合+并发+jvm+ssm
写在前面:大量总结不是系统的总结,而是作者本人根据自己情况总结的,许多我很清楚的地方就不在提及,大量源码也均未提及,尤其是框架的总结提及很浅.仅作为自己短期技术栈的一个总结,只作为参考,不是一定正确的 ...
- java之集合Collection之List接口总结
总结自韩顺平老师的零基础30天学 JAVA 目录 一.集合的框架体系 1.java的集合体系主要可分为两大类:Collection和Map集合. 2.Collection和Map的区别 二.Colle ...
- Java基础学习-Collection体系结构和迭代测试
package Collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterato ...
- 黑马程序员--java基础--集合(三)
-------android培训.java培训.期待与您交流! ---------- 第八部分:Collections工具类 Collections是集合框架的工具类,里面存在能对List集合容器操作 ...
最新文章
- 新手学习编程的最佳方式是什么?
- java中byte的范围计算
- 组策略中Run logon scripts synchronously和Run startup scripts asynchronously的区别
- Gartner:2021全球安全和风险支出将超1500亿美元
- 【kafka】kafka BindException: Address already in use 一个失误或者愚蠢的问题
- 按键精灵手机mysql_mysql,按键精灵,读取写入
- MongoDB数据同步工具之 MongoShake
- mysql pxc 安装_MYSQL PXC 集群安装
- 「3D建模」建模中什么是重新拓补?为什么要拓补,有何作用?
- 新特汽车在重庆“复活”:打造新品牌“电动屋”,已获网约车牌照
- android 4.4优化build.prop,Androidbuild.prop详细优化
- 软件测试的类型有哪些?
- 前端实现批量下载图片(自己的服务器需设置可跨域请求)
- E212: Can‘t open file for writing:权限不够或者没有上级目录
- 面试姊妹篇4:常见的Java多线程面试题
- 神经网络基础知识--感知器,S型神经元,梯度下降法,神经网络架构
- [BZOJ1233][Usaco2009Open]干草堆tower(单调队列优化)
- Linux下mysql 登录退出及常用命令
- 一个留学生的自白:清华vsMIT
- 快速获取雪碧图的图标样式插件 - gulp-css-spriter教程