JAVA基础知识之我的理解6(集合架构的一点分享,学习进行时)
集合框架总结
开篇废话
后补…..
提要
List Set Map
(What)是什么?
(How)怎么用?
一个小的应用(随便一个字符串算出字符的频度删除重复的字符).
(No Why)
详细报道
一.解决What和How
我们都知道数组是保存一组对象的最有效方式,但在实际情况中我们往往不知道要存多少对象,抑或需要更复杂且有效的方式储存,这时数组显得如此苍白而无力,而JAVA实用类提供的完整的容器类恰好能完美解决这一问题,其中的基本类型是:List,Set,Map以及Queue.( List,Set,Map就此入场)
(补充:Java的容器类位于Java.util包中)
下面我们来解决”What”,”How”这个问题
List ,Set, Map是三个常用的集合在系统中定义的接口,每种集合可以理解成为用来存放某种对象的容器.就像我们熟悉的数组.
List ,Set, Map三者的特点:
<!--[if !supportLists]-->1) <!--[endif]-->List
List也能像数组一样建立数字索引与对象的关联,表达数据结构中线性表的概念,List的主要特征是其元素以线性方式存储,且允许存放重复对象.List接口常用的实现类是ArrayList和LinkedList.
<!--[if !supportLists]-->2) <!--[endif]-->Set
Set 无序且不接受重复对象,(若e1.equals(e2)则e1和e2重复)Set常被用于测试归属性.常用的实现类为HashSet,TreeSet.
<!--[if !supportLists]-->3) <!--[endif]-->Map
Map(映射)是把键对象和值对象进行映射的集合,它的每一个元素都包含键对象和值对象.,从Map容器检索元素时,只要给键对象就会返回值对象,每个键最多可以映射一个值,但每个值可以被多个键映射.这一点会在下面的具体小应用中得到体现.
当然三者还有很多方法,在这就不一一赘述,JDK写的很清楚.下面就借着一个小应用简单的看看用法.
二.小程序
程序目标:1)对随便一个字符串(例如”fdsfdsfewffqfefggtrtwrtheq”)去除重复字符.
2)整理出每隔字符出现的频度
设计思路:我们先要把字符串转型为字符型并存如一维数组中,接下来就用到今天的知识,我们现在知道Map(映射)是把键对象和值对象进行映射的集合,它的每一个元素都包含键对象和值对象.,从Map容器检索元素时,只要给键对象就会返回值对象,每个键最多可以映射一个值,但每个值可以被多个键映射.那么我们可以用键对象存放数组元素,值对象用来计数这样就可以完成对频度的统计.(具体实现见代码).
详细代码:
//判断字符频度并打印
public class map {
public static void main(String[] args){
String str="fsadfdsafefefeferwfg";
char[]c=str.toCharArray();
int i=c.length-1;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
map.put(c[0], 1);
//判断字符频度并打印
for(int j=1;j<=i;j++){
//如果字母存在,则加1
if(map.containsKey(c[j])){
Integer k =map.get(c[j]);
map.put(c[j],++k);
}
else
//如果字母不存在则加入
map.put(c[j], 1);
}
System.out.println(map);
}
}
//********************去重**********************\\
public class map2 {
static Integer k;
static int x;
public static void main(String[] args){
String str="fsadfdsafefefeferwfg";
char[] c=str.toCharArray();
int i=c.length-1;
HashMap map = new HashMap();
map.put(c[0], 1);
for(int x=1;x<=i;x++){
if(!map.containsKey(c[x])){
map.put(c[x], 1);
}
}
System.out.println(map);
}
}
- JAVA基础知识之我的理解7(关于File的一点总结,学习再继续,大家一起努力)
- 黑马程序员--集合框架知识总结和泛型--java学习日记7(基础知识)
- Java基础知识学习总结(一)---深入理解Java的接口和抽象类
- JAVA基础知识再学习(7)内部类的理解
- 关于进行java学习和Android开发,本人认为的一些基础的入门必需知识,全程手敲
- Java基础知识强化之集合框架笔记71:模拟斗地主洗牌和发牌并对牌进行排序的案例
- 【Java学习笔记】基础知识学习11【集合和列表类】
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- Java基础知识学习之路-09-第八章-Java集合
- JAVA基础知识再学习(5)理解多态&向上转型&向下转型
- java基础知识回顾之java Thread类学习(十一)--join方法的理解
- [学习笔记] Java核心技术 卷一:基础知识 集合(六)
- JAVA第一周学习周记:java基础及面向对象基础知识
- JAVA基础知识精华总结分享
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- fedora学习笔记 1:fedora与linux的一点基础知识
- 学习Spring必学的Java基础知识----反射
- Java学习笔记:基础知识2
- 【Java学习笔记】基础知识学习10【继承与多态】
- 集合 java基础学习笔记 第四天