【摘】java中Map和List

2018-05-31  本文已影响0人  BugMyGod

原文链接
java集合主要分为三种类型:

要理解集合首先需要先了解数组:

数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而java集合可以存储和操作数目不固定的一组数据。所有的java集合都位于java.util包中。java集合只能存放引用类型的数据,不能存放基本数据类型。

集合与数组的区别:

引用:
世界上本来没有集合,只有数组(参考C),但有人想要,所以有了集合;
有人想有可以自动扩展的数组,所以有了List;
有人想有没有重复的数组,所以有了Set;
有人想有自动排序的数组,所以有了TreeSet、TreeList、Tree;
而几乎所有的集合都是基于数组来实现的。
因为集合是对数组做的封装,所以,数组永远比任何一个集合要快。
但,任何一个集合,比数组提供的功能要多。

  1. 数组声明了它容纳的元素类型,而集合不声明。因为集合以object形式来存储它们的元素。
  2. 一个数组实例有固定的大小,不能伸缩。集合则可根据需要动态改变大小。
  3. 数组是一种可读/可写数据结构(没有办法创建一个只读数组)。然而可以用集合提供的ReadOnly方法,以只读方式来使用集合。该方法将返回一个集合的只读版本。
    =============================
java所有‘存储及随机访问一连串对象’的做法,array是最有效率的一种。
  1. 效率高,但容量固定且无法动态改变。
    array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。
  2. java中有一个Array类,专门用来操作array。
    arrays中拥有一组static函数,
    equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
    fill():将值填入array中。
    sort():用来对array进行排序。
    binarySearch():在排好序的array中寻找元素。
    System.arraycopy():array的复制。

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。所以就要用到集合。

集合分类:

Collection:List、Set
Map:HashMap、HashTable

1.1 Collection接口

Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。


1.1.1 Collection接口的方法:

1.1.2 Iterator接口声明了如下方法:

1.2 Set(集合)

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类:

Set 的用法:存放的是对象的引用,没有重复对象

Set set=new HashSet();  
String s1=new String("hello");   
String s2=s1;  
String s3=new String("world");   
set.add(s1);   
set.add(s2);   
set.add(s3);   
System.out.println(set.size());//打印集合中对象的数目 为 2。  

Set 的 add()方法是如何判断对象是否已经存放在集合中?

boolean isExists=false;  
Iterator iterator=set.iterator();   
while(it.hasNext()) {  
  String oldStr=it.next();   
  if(newStr.equals(oldStr)){  
       isExists=true;   
  }  
} 

Set的功能方法 :
Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)

1.3 List(列表)

List的特征是其元素以线性方式存储,集合中可以存放重复对象。
List接口主要实现类包括:( 参考文章:ArrayList和LinkedList的区别

  1. for循环和get()方法
for(int i=0; i<list.size();i++){  
  System.out.println(list.get(i));   
}  
  1. 使用迭代器(Iterator)
Iterator it=list.iterator();   
while(it.hashNext()){  
  System.out.println(it.next());  
}  

Listd 功能方法:

上一篇 下一篇

猜你喜欢

热点阅读