JAVA基础知识之我的理解6(集合架构的一点分享,学习进行时)

集合框架总结

开篇废话

后补…..

提要

List        Set       Map

(What)是什么?

(How)怎么用?

一个小的应用(随便一个字符串算出字符的频度删除重复的字符).

(No Why)

详细报道

.解决WhatHow

我们都知道数组是保存一组对象的最有效方式,但在实际情况中我们往往不知道要存多少对象,抑或需要更复杂且有效的方式储存,这时数组显得如此苍白而无力,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接口常用的实现类是ArrayListLinkedList.

<!--[if !supportLists]-->2)    <!--[endif]-->Set

Set 无序且不接受重复对象,(e1.equals(e2)e1e2重复)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);

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值