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. 痞子衡嵌入式:Farewell, 我的2020

    -- 题图:苏州大学老校门 2020年的最后一天,痞子衡驱车300多公里从苏州赶回了苏北老家(扬州某边陲小镇),连镇铁路虽然新通车了,解决了苏南苏北多年的铁路不直通问题,但奈何痞子衡老家小镇离最近的火 ...

  2. 如何快速学会git

    相信大多数入门者都对git的原理比较恍惚,今天我们来告诉大家如何快速学会git命令. 1.git init 这个命令会在当前目录里创建一个.git目录,也就是初始化本地仓库.git. 如图先创建文件夹 ...

  3. Redis学习之路(二)Redis集群搭建

    一.Redis集群搭建说明 基于三台虚拟机部署9个节点,一台虚拟机三个节点,创建出4个master.4个slave的Redis集群. Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式) ...

  4. htaccess在线生成工具用法大全 (转)

    对于一个不懂程序的SEOER来做,更改代码方面是一件非常苦难的事情,当我们遇到301转向以及404页面的制作问题时,经常会困恼我们,这里我提供一个htaccess在线生成工具,这里有404页面链接生成 ...

  5. 关于.NET中的控制反转(三)- 依赖注入之 Autofac

    一.Autofac简介 Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.Autofac的主要特性如下: 组件侵入性为零 ...

  6. Mac安装Go语言

    正文 安装 安装我们使用 HomeBrew ,其使用方法详见我的上一篇博文 brew install go 配置环境变量 Go1.3及以后版本跳过以下步骤 进入变量文件 cd ~ vim .bash_ ...

  7. 安装蓝鲸paas社区版

    安装蓝鲸paas社区版http://docs.bk.tencent.com/bkce_install_guide/setup/get_ready.html#hostssystemctl stop fi ...

  8. 【MySQL】ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing

    今天上午遇到了一个问题,新创建的mysql5.7的数据库,由于初始化有点问题,没有给root密码,用了免密码登录. 但是,修改了root密码之后,把配置中的免密登录的配置注释掉后,重启服务.服务正常启 ...

  9. celery应用

    celery---分布式任务队列 Celery是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具. Celery是一个基于python开发的模块,可以帮助我们对任 ...

  10. Py-上下文管理方法,描述符的应用,错误与异常

    上下文管理方法: 可以在exit里面弄一些内存清理的功能 class Open: def __init__(self,name): self.name=name def __enter__(self) ...