java之集合学习(三)
2015-06-23 13:33
260 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
TreeSet二叉树
|– 底层是二叉树结构
|– 对于存储在TreeSet集合中的对象,进行自然顺序的排序
|– 自然顺序是对象实现Comparable接口,覆盖compareTo方法的结果
|– 让集合TreeSet自身具备比较性
定义类(比较器),实现Comparator接口,覆盖Compare方法
在建立TreeSet对象的时候,传递比较器对象
|– 如果对象自身具备比较性,使用比较器,集合会以比较器为主
泛型
|– 安全机制
|– 出现在JDK1.5级以后版本
|– 将程序的问题由运行时期,提前到了编译时期
|– 避免了强制的类型转换
|– 就是限制数据类型
|– 格式:
集合类<数据类型> 变量 = new 集合类<数据类型>();
泛型的案例
|– 自定义对象的Person,可以存储到List结合,HashSet,TreeSet 带泛型的 *
|– 泛型的限定,明白上限和下限,不要求会写,能看的明白知道什么意思就行了
|– ? 集合的通配符,匹配任意的泛型
Map集合
|– 双列的集合,一次存储一个键值对象
|– 将键映射到值
|– 不允许存储重复的键,允许存储重复的值
|– 每个键只能映射一个值
Map集合中的常用方法
|– put(K,v)将对象存储到集合,如果有重复的键,put方法会返回被替换之间的值
|– get(K) 根据键获取对应的值,如果没有这个键,返回null
|– containsKey(K)判断集合中是否有这个键,有就返回true
|– containsValue(V)判断集合中是否有这个值,有就返回true
|– size() 返回集合中存储的键值对的个数
|– keySet() 将集合中的键存储到Set集合
|– entrySet() 将集合中的键值关系存储到Set集合,键值关系对象是Map.Entry
Map集合中如果取出对象的两个方式
|– keySet()开发常用
|– entrySet()开发不太常用,面试会考
HashMap集合
|– 底层是哈希表结构
|– 不允许重复的键
|– 线程不安全,操作效率高
|– 允许null值,和null键
|– 案例,存储自定义对象并取出,需要实现2种方式
一些说明性的图片
![](http://img.blog.csdn.net/20150623132922583)
![](http://img.blog.csdn.net/20150623133011335)
![](http://img.blog.csdn.net/20150623133036977)
思考:
接收一个字符串,找出单个字符出现的次数
TreeSet二叉树
|– 底层是二叉树结构
|– 对于存储在TreeSet集合中的对象,进行自然顺序的排序
|– 自然顺序是对象实现Comparable接口,覆盖compareTo方法的结果
|– 让集合TreeSet自身具备比较性
定义类(比较器),实现Comparator接口,覆盖Compare方法
在建立TreeSet对象的时候,传递比较器对象
|– 如果对象自身具备比较性,使用比较器,集合会以比较器为主
泛型
|– 安全机制
|– 出现在JDK1.5级以后版本
|– 将程序的问题由运行时期,提前到了编译时期
|– 避免了强制的类型转换
|– 就是限制数据类型
|– 格式:
集合类<数据类型> 变量 = new 集合类<数据类型>();
泛型的案例
|– 自定义对象的Person,可以存储到List结合,HashSet,TreeSet 带泛型的 *
|– 泛型的限定,明白上限和下限,不要求会写,能看的明白知道什么意思就行了
|– ? 集合的通配符,匹配任意的泛型
Map集合
|– 双列的集合,一次存储一个键值对象
|– 将键映射到值
|– 不允许存储重复的键,允许存储重复的值
|– 每个键只能映射一个值
Map集合中的常用方法
|– put(K,v)将对象存储到集合,如果有重复的键,put方法会返回被替换之间的值
|– get(K) 根据键获取对应的值,如果没有这个键,返回null
|– containsKey(K)判断集合中是否有这个键,有就返回true
|– containsValue(V)判断集合中是否有这个值,有就返回true
|– size() 返回集合中存储的键值对的个数
|– keySet() 将集合中的键存储到Set集合
|– entrySet() 将集合中的键值关系存储到Set集合,键值关系对象是Map.Entry
Map集合中如果取出对象的两个方式
|– keySet()开发常用
|– entrySet()开发不太常用,面试会考
HashMap集合
|– 底层是哈希表结构
|– 不允许重复的键
|– 线程不安全,操作效率高
|– 允许null值,和null键
|– 案例,存储自定义对象并取出,需要实现2种方式
一些说明性的图片
思考:
接收一个字符串,找出单个字符出现的次数
//任意的,输入字符串,计算单个的字符出现了多少次 import java.util.*; public class MapTest { public static void main(String[] args) { //接收输入 Scanner sc = new Scanner(System.in); String str = sc.next(); //将字符串转成字符数组 char[] ch = str.toCharArray(); //创建一个集合容器 TreeMap <Character,Integer> hm = new TreeMap<Character,Integer>(); //遍历数组 for( int x = 0 ; x < ch.length ; x++){ //从数组中单个取出每一个字符,当做键,去集合里面获取值 Integer i = hm.get(ch[x]); //值i就有两个可能,一种是null,一种是非null if( i == null){//键,集合中没有 //将字符串作为键,存储到map集合,值就是默认的1 hm.put(ch[x], 1); }else if( i != null){//键,在集合中出现过了 //就将值进行+1的操作,在存回集合 i++; hm.put(ch[x],i); } } //对Map集合进行迭代的操作 Set<Character> set = hm.keySet(); Iterator<Character> it = set.iterator(); while(it.hasNext()){ Character c = it.next(); Integer i = hm.get(c); System.out.println("字符"+c+" 出现了"+i+"次"); } } }
相关文章推荐
- 简单的java调C
- java 初始化顺序以及由此可能引发的构造方法的潜在问题。
- Hibernate运行时出现:java.lang.ClassCastException: cn.mo.bean.Role_$$_javassist_1 cannot be cast to javass
- springboot pom 引用集合
- java正则表达式
- Java设计模式——六大原则之里氏替换
- java基础--正则表达式
- Eclipse更改皮肤
- Java工程导入外部jar包与内部jar包(导入项目有红色感叹号的解决办法)
- Java设计模式透析之 —— 模板方法(Template Method)
- java.sql 接口 PreparedStatement ResultSet DriverManager
- Java数组实现循环队列的两种方法
- Java逻辑操作符说明
- Java设计模式——六大原则之单一原则
- java容器
- 修改Hibernate实体类字段int为Integer产生java.lang.NoSuchMethodError
- osgi环境问题
- JAVA设计模式之单例设计模式
- 认识Java标识符
- jdk的环境变量配置