Java——集合框架之Set&HashSet,HashMap,泛型,compareTo
Set
Set接口——数据存放无序,非常简单,主要呈现信息列表
Set接口存储一组唯一、无序的对象
HashSet是Set接口常用的实现类
Set接口不存在get方法
- Iterator接口:表示对集合进行迭代的迭代器
- hasNext():表示判断是否还有元素可以迭代
- next():方法:返回迭代的下一个元素
HashMap
public static void main(String[] args) {
//存储数据的载体
Set set = new HashSet<>();
set.add(new Theme(1, "标题1", "简介one"));
set.add(new Theme(2, "标题2", "简介two"));
//遍历数据
Iterator iter = set.iterator();
while(iter.hasNext()){
Theme theme = (Theme)iter.next();
System.out.println(theme.getId()+" "+theme.getName()+" "+theme.getRemark());
}
}
public static void main(String[] args) {
Set set = new HashSet<>();
// set.add('b');
// set.add('a');
// Iterator iter = set.iterator();
// while(iter.hasNext()){
// System.out.println(iter.next());
// }
//唯一,不能出现重复的数据
//基本数据类型:值比较 引用数据类型:对象比较(地址)
set.add('a');
set.add(1);
set.add(1);
Theme theme1 = new Theme(1, "1", "1");
Theme theme2 = new Theme(1, "1", "1");
set.add(theme1);
set.add(theme2);
Iterator iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
public static void main(String[] args) {
//创建map集合对象
Map map = new HashMap<>();
//键值对形式存储,键:一般基本数据类型 值:
//键值对是成对出现的。 key-value
map.put(1, "abc");
map.put(2, "def");
map.put(3, "ghi");
// 通过key得到value
System.out.println(map.get(1));
System.out.println(map);
// remove 删除
map.remove(2);
System.out.println(map);
// size 可以得到键值对的个数
System.out.println(map.size());
//存储国家编号
Map map2 = new HashMap<>();
// map中的ket:Object value:Object
map2.put("CN", "China");
map2.put("US", "America");
map2.put("JP", "Japan");
System.out.println(map2.get("CN"));
// containsKey 是否包含传入的key的键值对
System.out.println(map.containsKey("HK"));
System.out.println(map.containsKey("CN"));
Map map3 = new HashMap<>();
Student stu = new Student(1, "小张", 12);
map3.put(stu.getStuId(), stu);
if(map3.containsKey(stu.getStuId())){
System.out.println("找到了!");
}else{
System.out.println("没找到!");
}
}
Map map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
//得到键值对中的键,组成成一个Set集合
// Set set = map.keySet();
// System.out.println(set);
// values 所有的值组成的一个集合
// Collection col = map.values();
// System.out.println(col);
// map下的entry可以得到由所有键值对组成的集合
//里边存储的是所有的数据 (键——值组成)
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
Iterator<Map.Entry<Integer, String>> iter = entrySet.iterator();
while(iter.hasNext()){
Map.Entry<Integer,String> entry = iter.next();
System.out.println("键:"+entry.getKey());
System.out.println("值"+entry.getValue());
}
泛型
public class A<T extends Number>{
//T 类型 必须是Number类或Number类的子类
public static void main(String[] args) throws ClassNotFoundException {
A<Double> d = new A<>();
//Number 及其子类
// A<String> a = new A<>(); //报错
//String 不继承自Number
List<Number> list = new ArrayList<>();
test(list);
}
// super 传入的类型必须是Number或Number的父类
// extends 传入的类型必须是Number或Number的子类
// ?通配符,可以代指任意类型,方法的参数里
public static void test1(List<? super Number> s){ }
public static void test(List<? extends Number> s) throws ClassNotFoundException{
Class<?> a = Class.forName("java.lang.StringBuffer");
System.out.println(a.getName());
}
}
public static void main(String[] args) {
//应该存储相同类型的数据
//使用泛型
// 1:泛型约束了数据存储的类型
// 2:使用get方法得到的数据类型是确定的
// 泛型的语法:<Object> 必须是引用数据类型,
// 如果存储基本数据类型,就要转成相应的包装类
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int a = list.get(0);
List<Student> list2= new ArrayList<>();
list2.add(new Student(1, "张三", 10));
Student stu = list2.get(0);
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "abc");
}
compareTo
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
//按照id进行升序排序
// 如果对象本身的id 大于 传入的对象id,
//返回值是正数,就是升序排序
//返回值是负数,就是降序排序
// if(id>o.getId()){
// return 1;
// }else if(id==o.getId()){
// return 0;
// }
// return -1;
//按照姓名排序
//return name.compareTo(o.getName());
//按照年龄排序
if(age>o.getAge()){
return 1;
}else if(age==o.getAge()){
return 0;
}
return -1;
}
Java——集合框架之Set&HashSet,HashMap,泛型,compareTo的更多相关文章
- java集合框架(1) hashMap 简单使用以及深度分析(转)
java.util 类 HashMap<K,V>java.lang.Object java.util.AbstractMap<K,V> java.util.Hash ...
- 一起学 Java集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- (转)Java集合框架:HashMap
来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...
- Java集合框架:HashMap
转载: Java集合框架:HashMap Java集合框架概述 Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...
- Java集合(5)一 HashMap与HashSet
目录 Java集合(1)一 集合框架 Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树.TreeMap与TreeSet(上) Java集合(4)一 红黑树. ...
- 【java集合框架源码剖析系列】java源码剖析之HashSet
注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于HashSet的知识. 一HashSet的定义: public class HashSet&l ...
- 【java集合框架源码剖析系列】java源码剖析之HashMap
前言:之所以打算写java集合框架源码剖析系列博客是因为自己反思了一下阿里内推一面的失败(估计没过,因为写此博客已距阿里巴巴一面一个星期),当时面试完之后感觉自己回答的挺好的,而且据面试官最后说的这几 ...
- Java集合框架源码(二)——hashSet
注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看. 在前面的博文(Java集合框架源码(一)——hashMap)中我们详细讲了HashMap的原 ...
- Java集合框架源码(一)——hashMap
注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看. 一首先我们来看一下HashMap类的定义: public class HashMap< ...
随机推荐
- 使用pdf.js aspose各种文档转PDF 版本对应license.xml 去水印破解
在使用pdf.js途中,使用aspose转换的文件一直有水印,在网上找了许多破解办法都是已经失效的,于是乎,就查看了一下jar的源码,找到了版本对应的破解字符(如下):对应版本为 aspose-wor ...
- stm32之can总线过滤器研究
stm32的can总线的配置如下: CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式 CAN_InitStructure.CAN_A ...
- 【并发编程】- 内存模型(针对JSR-133内存模型)篇
并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存 程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递 程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 ...
- Phoneix(三)HBase集成Phoenix创建二级索引
一.Hbase集成Phoneix 1.下载 在官网http://www.apache.org/dyn/closer.lua/phoenix/中选择提供的镜像站点中下载与安装的HBase版本对应的版本. ...
- 上班从换一张桌面壁纸开始——开源小工具Bing每日壁纸
发布一个自用的开源小软件,Bing每日壁纸,使用c# winform开发.该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事. 功能特性 自动获取Bing最新图片 ...
- HBase 底层原理详解(深度好文,建议收藏)
HBase简介 HBase 是一个分布式的.面向列的开源数据库.建立在 HDFS 之上.Hbase的名字的来源是 Hadoop database,即 Hadoop 数据库.HBase 的计算和存储能力 ...
- maven 的安装与配置详细步骤
1. 直接搜索maven 2. 进入后点击download界面,这时出现的是当前最新版本, 当然还有以前的版本可供下载 3. 下载解压到你指定的目录后,需要配置一下环境变量. a. 右键此电脑点击属性 ...
- spring cloud gateway 自定义GatewayFilterFactory
spring cloud gateway提供了很多内置的过滤器,那么因为需求的关系,需要自定义实现,并且要可配置,在一番折腾之后,总算是解决了,那么久记录下来 对于自定义的factory,我们可以选择 ...
- 【Oracle】10g rac如何开启归档和关闭归档
开启归档: 1.设置想设置的归档的位置,我们这里归档的位置为ASM磁盘组,磁盘组的名称为DATA alter system set log_archive_dest_1='location=+DATA ...
- P1220 关路灯(区间规划)
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...