首页 > 代码库 > 有关JAVA基础学习中的集合讨论

有关JAVA基础学习中的集合讨论

 

    很高兴能在这里认识大家,我也是刚刚接触后端开发的学习者,相信很多朋友在学习中都会遇到很多头疼的问题,希望我们都能够把问题分享出来,把自己的学习思路整理出来,我们一起探讨一起成长。

   今天我在这里简单讲解一下我对学习中集合的理解。很多朋友再写解释的时候,没有从最简单说起,造成了阅读中的困惑,或许我能帮助你对集合有一个新的认识。

  首先当我们谈到集合的时候要了解一下集合的具体概念。

java集合的概念是相对于数组来说的,那么什么是数组呢?

  数组:数组是一段连续存储单元. 每个存储单元的空间大小相同.类型统一,数组的长度是不可变的(定义之后)。

          同一个数组只能存放相同类型的数据。(基本数据类型或者引用数据类型)

这样我们再解释集合就会容易理解了。

  集合:1,可以操作和储存数目不固定的一组数据。

           2,  java中所有集合都位于java.util包中。

           3,java集合中只能存放引用数据类型,不能存放基本数据类型。

           4,不限定集合的长度,可以添加任意多的元素。

           5,集合中限定元素成为泛型

  那么我们了解集合基本概念之后,看看集合的分类?首先我们要了解一点那就是接口的概念。

什么是接口呢?

什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象。
什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象。
方法特征包括:方法的名字、参数的数目、参数的类型。不包括:返回类型、参数名字、和抛出的异常。
接口是类型转换的前提、是动态调用的保证。实现某一接口就完成了类型的转换(多重继承);动态调用只关心类型,不关心具体类。

因为我们谈到集合的时候必须涉及到接口。下面我们就了解一下集合的基本分类。我们看下面这幅图片。

技术分享

1、Collection接口(因为这个集合本身也属于接口)

 Collection是最基本集合接口,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下:

2, Set接口

  Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。

       特征:无序且不可重复。

3、  List接口

        List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复。

       特征:有序且可重复。

       两个重要的实现类:ArrayList和LinkedList

       1.ArrayList特点是有序可重复的

       2.LinkedList是一个双向链表结构的。

 

4、Map接口

 Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。

特征:它描述了从不重复的键到值的映射。

两个重要的实现类:HashMap和TreeMap

1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。

2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。

5、Iterator接口

Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问器,用于循环访问集合中的对象。       所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。

关于一些集合的实现类的方法;

Arrays.hashCode:用来根据数组的内容计算其哈希值(数组对象的hashCode()不可用)。这个方法集合了Java 5的自动装箱和无参变量的特性,来实现将一个变量快速地传给 Arrays.hashcode方法——只是传值进去,不是对象。

Arrays.sort:对整个数组或者数组的一部分进行排序。也可以使用此方法用给定的比较器对对象数组进行排序。

Arrays.toString:打印数组的内容。

所有的集合都可以用T[] Collection.toArray( T[] a ) 这个方法复制到数组中。通常会用这样的方式调用,

1
<span class="hljs-keyword">return coll.toArray( <span class="hljs-keyword">new T[ coll.size() ] );</span></span>

这个方法会分配足够大的数组来储存所有的集合,这样 toArray 在返回值时就不必再分配空间了。

怎么遍历集合中的元素?

A:

 Iterator it=al.iterator();
  while(it.hasNext())
  {
  sop(it.next());
 }

B:

for(Iterator it=al.iterator();it.hasNext();)
{
sop(it.next());
}

c:

 for(String alist:al)
 {
  System.out.println(alist);
  }

我们对集合的探讨暂时到这里,后续可以加赠内容。

 

 

      

 

有关JAVA基础学习中的集合讨论