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的更多相关文章

  1. java集合框架(1) hashMap 简单使用以及深度分析(转)

    java.util 类 HashMap<K,V>java.lang.Object  java.util.AbstractMap<K,V>      java.util.Hash ...

  2. 一起学 Java集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  3. (转)Java集合框架:HashMap

    来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...

  4. Java集合框架:HashMap

    转载: Java集合框架:HashMap Java集合框架概述   Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...

  5. Java集合(5)一 HashMap与HashSet

    目录 Java集合(1)一 集合框架 Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树.TreeMap与TreeSet(上) Java集合(4)一 红黑树. ...

  6. 【java集合框架源码剖析系列】java源码剖析之HashSet

    注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于HashSet的知识. 一HashSet的定义: public class HashSet&l ...

  7. 【java集合框架源码剖析系列】java源码剖析之HashMap

    前言:之所以打算写java集合框架源码剖析系列博客是因为自己反思了一下阿里内推一面的失败(估计没过,因为写此博客已距阿里巴巴一面一个星期),当时面试完之后感觉自己回答的挺好的,而且据面试官最后说的这几 ...

  8. Java集合框架源码(二)——hashSet

    注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看. 在前面的博文(Java集合框架源码(一)——hashMap)中我们详细讲了HashMap的原 ...

  9. Java集合框架源码(一)——hashMap

    注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看. 一首先我们来看一下HashMap类的定义: public class HashMap< ...

随机推荐

  1. 详解CSS布局

    CSS页面布局允许我们拾取网页中的元素,并且控制它们相对正常布局流.周边元素.父容器或者主视口/窗口的位置.主要对文档流的改变进行布局.假设你已经掌握了CSS的选择器.属性和值,并且可能对布局有一定了 ...

  2. Spring中ApplicationContextAware接口的用法

    1.为什么使用AppplicationContextAware? ApplicationContext的BeanFactory 的子类, 拥有更强大的功能,ApplicationContext可以在服 ...

  3. MySQL在按照某个字段分组、排序加序号

    事情是这样的,最近领导给了一个新的需求,要求在一张订单表中统计每个人第一次和第二次购买的时间间隔,最后还需要按照间隔统计计数,求出中位数等数据. 由于MySQL不想Oracle那般支持行号.中位数等, ...

  4. Approach for Unsupervised Bug Report Summarization 无监督bug报告汇总方法

    AUSUM: approach for unsupervised bug report summarization 1. Abstract 解决的bug被归类以便未来参考 缺点是还是需要手动的去细读很 ...

  5. MongoDB Sharding(一) -- 分片的概念

    (一)分片的由来随着系统的业务量越来越大,业务系统往往会出现这样一些特点: 高吞吐量 高并发 超大规模的数据量 高并发的业务可能会耗尽服务器的CPU,高吞吐量.超大规模的数据量也会带来内存.磁盘的压力 ...

  6. 【Java】集合综合案例 - 播放器管理

    集合综合案例 文章目录 集合综合案例 需求分析 项目演示 详细设计 代码实现 歌曲类 播放器类 播放列表类 测试 参考资料 播放器管理 需求分析 项目演示 详细设计 代码实现 重新搞一波 复习巩固 简 ...

  7. RandomForest 随机森林算法与模型参数的调优

    公号:码农充电站pro 主页:https://codeshellme.github.io 本篇文章来介绍随机森林(RandomForest)算法. 1,集成算法之 bagging 算法 在前边的文章& ...

  8. 【Oracle】regexp_substr()函数详解

    环境:Oracle10.2.0.5 在SQL中尝试使用正则 可以试下regexp_substr()来进行分割 首先创建一个实验视图: SQL> create or replace view te ...

  9. ctfhub技能树—RCE—过滤目录分隔符,过滤运算符

    过滤目录分隔符 打开靶机 查看页面信息 查询当前目录下文件结构 进入flag_is_here目录 127.0.0.1;cd flag_is_here 127.0.0.1||ls 执行之后发现还是在当前 ...

  10. 开发进阶:Dotnet Core多路径异步终止

    今天用一个简单例子说说异步的多路径终止.我尽可能写得容易理解吧,但今天的内容需要有一定的编程能力.   今天这个话题,来自于最近对gRPC的一些技术研究. 话题本身跟gRPC没有太大关系.应用中,我用 ...