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< ...
随机推荐
- VIM和正则表达式
1.VIM 1.1vim简介 vim是一款强大的文本编辑器,它和 vi 使用方法一致,但功能更为强大.官网:www.vim.org.中文手册:http://vimcdoc.sourceforge.ne ...
- U盘容量变小处理
参考: https://blog.csdn.net/weixin_39792252/article/details/80676300?utm_medium=distribute.pc_relevant ...
- 大数据可视化呈现工具LightningChart的用法
LightningChart (LightningChart Ultimate) 软件开发工具包是微软VisualStudio 的一个插件,专攻大数据可视化呈现问题,用于WPF(WindowsPres ...
- shellSyntax.md
shell #! /bin/bash 头文件 echo -e 若字符串出现特殊字符,则特别处理 -n 不要在最后自动换行 ./filename.sh sh filename.sh r ...
- [Leetcode刷题]——链表
一.找出两个链表的交点 160.相交链表(easy)2021-01-05 编写一个程序,找到两个单链表相交的起始节点 如下面的两个链表,在c1 处相交: public class Soluti ...
- day123:MoFang:直播间列表信息的前后端实现&创建房间的前后端实现
目录 1.服务端提供所有直播间的列表信息 2.前端显示房间列表 3.创建房间 1.服务端提供所有直播间的列表信息 1.marshmallow.py from marshmallow_sqlalchem ...
- ASP.NET Core中的数据保护
在这篇文章中,我将介绍ASP.NET Core 数据保护系统:它是什么,为什么我们需要它,以及它如何工作. 为什么我们需要数据保护系统? 数据保护系统是ASP.NET Core使用的一组加密api.加 ...
- 剑指offer 面试题0:扎实的基础:即编程语言、数据结构和算法
编程语言: Q:如果写的函数需要传入一个指针,则是否需要为该指针加上const?把const加在指针不同的位置是否有区别? A:const是用来声明一个常量的,如果不想让一个值改变就应该加上const ...
- stat filename
查看文件的mtime,atime,ctime 3个时间
- QTextEdit的paste
By 鬼猫猫 20130117 http://www.cnblogs.com/muyr/ 背景 QTextEdit中粘贴一大段文字时,EasyDraft中粘贴进去的文字们的格式就乱了,处于无格式.还有 ...