首页 > 技术文章 > 容器的相关知识

tangdeqiang 2017-10-19 21:07 原文

在学习容器之前,我得先回顾一个知识点。就是java1.5新增的for循环,这个循环简化了传统的for循环。但是也有一些缺点,所以特意拿出来说一下,具体见下面的图:

下面就开始介绍一下容器的相关知识,容器这一章,主要记住1136,对于这个数字可能你还不太理解,但是在看了下面的图了你就很清楚了,所以先看下面的图

大家只要记住这个数字并且理解。我相信你的容器这一章就差不多了。所以一定要记住。对于其中set和list和map。这几个要有大体的了解,所以对于这几个容器接口,来看一下下面的图就理解了

只要理解了上面的图。我相信你应该对这三类容器接口有一个大体的了解,具体的知识我们来看下面的讲解。首先来看一下set吧

对于set这个接口你只要大体掌握这里面的方法就差不多能理解大概了,对于其余的方法可以去查询API文档。下面我们来看一下list

对于list也是如此,我们简单来看一下list的例子。举例如下:

只要大体知道意思就算你了解并且入门了,至于应用还需要以后在实践过程中不断学习。下面我们来看一下关于map的知识

如果map你也大体了解掌握了。说明你对容器这一章你也基本是入门了。剩下的就是要不断的练习。对于这几种容器,我们还会联系到数据结构的知识,所以在以后的学习中会遇到一些增删改查的知识,所以我们要记住这几个数据结构的特点,以便我们利用的时候能够提高效率。特点请看下面

知道特点后我们再来了解一下泛型的知识。泛型也是java1.5过后的新增的知识,对于泛型来说,我的理解就是简化了程序,使程序达到了强壮性。并且提高了程序的可读性。为什么这么说,因为泛型在写程序之前就将需要的类型确定了,所以在后面的程序中减少了转换等等。来看一下知识点

所以使用泛型得到了很多好处。我们再来看一个泛型的两个例子,就基本理解泛型了。

 

import java.util.*;
public class TestArgsWords {
  //private static final Integer ONE = new Integer(1);
  private static final int ONE = 1;
  public static void main(String args[]) {  
      //在这里没有使用泛型
    Map m = new HashMap();
    for (int i = 0; i < args.length; i++) {
      //Integer freq = (Integer) m.get(args[i]);
       //在这里没有使用泛型所以要进行强制转换,如果在前面使用泛型,在这里就会自动打包和解包
      int freq = (Integer) m.get(args[i]) == null ? 0 : (Integer) m.get(args[i]);
      //m.put(args[i],(freq == null? ONE : new Integer(freq.intValue() + 1)));
      m.put(args[i], freq==0 ? ONE : freq + 1);
    }
    System.out.println
        (m.size() + " distinct words detected:");
    System.out.println(m);
  }
}

再来看一个实用了泛型的程序

import java.util.*;
public class TestArgsWords2 {
  private static final int ONE = 1;
  public static void main(String args[]) {    
      //在这里使用了泛型,所以在后面不需要强制转换了。这就是泛型带来的好处
    Map<String, Integer> m = new HashMap<String, Integer>();
    for (int i = 0; i < args.length; i++) {
      
      if(!m.containsKey(args[i])) { 
          //不需要强制转换,并且也不需要指明类型,
          //因为在前面已经指明了类型,是String类型的,所以不需要了
          m.put(args[i], ONE);
      }
      else {  
          //不需要强制转换,前面已经指明是Integer类型了,所以这里不需要了
          int freq = m.get(args[i]);
          m.put(args[i], freq + 1);
      }
      
    }
    System.out.println
        (m.size() + " distinct words detected:");
    System.out.println(m);
  }
}

 

推荐阅读