您的位置:首页 > 编程语言 > Java开发

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种方式

一些说明性的图片







思考:

接收一个字符串,找出单个字符出现的次数

//任意的,输入字符串,计算单个的字符出现了多少次

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+"次");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: