美文网首页视觉艺术
做一只小白,从根本上认识java

做一只小白,从根本上认识java

作者: 矅要咬瑶腰 | 来源:发表于2020-07-28 15:17 被阅读0次

    一、什么是集合?

    举个例子:当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入。使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找。在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这个容器就是集合。集合本质是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。下面便 一 .一 介绍:其中在两大接口中会有框架图,以方便大家学前、学后在大脑里可以形成一个思维导图,也方便大家检查自己对各各知识点的熟悉程度。 注意: 由于在集合中是有一个参数化类型的,所以在下面的代码里我会 指定成Object。为什么我要指定为Object呢?因为Java中的Object类是所有类的超类。 先涉及一下泛型的定义:集合类<参数化类型> 对象 =

    new 集合类<参数化类型> (); 也可以先前往 四、泛型,了解U•ェ•*U

    二、Collection接口

    1、集合类中Collection接口的介绍

    首先了解一下Collection接口是List、Set等接口的父接口。 先简单了解一下Collection接口的常用方法吧:

    bollean add(Object obj)   向集合添加一个obj元素

    void clear()              清空集合中所有元素

    boolean isEmpty()         如果此集合为空,则返回turn

    int size()                返回此集合中元素个数

    如果想了解其他方法可以查询 Java基础类库(API) 这个是个好东西强烈推荐下面先看看例题演示上面的方法吧:

    import java.util.*;

    public class TestCollection{

     public static void main(String[] args) {

       Collection coll =newArrayList();    //创建集合

       coll.add(1000);                       //添加集合

       coll.add("phone");

       System.out.println(coll);             //打印集合coll

       System.out.println(coll.size());      //打印集合长度

       Collection coll2 =newHashSet();

       coll2.add(1000);

       coll2.add("phone");

       System.out.println(coll2);            //打印集合coll2

       coll.clear();                         //清空集合

       System.out.println(coll.isEmpty());   //打印集合是否为空

      }

    }

    输出的结果为:

    [1000, phone]

    2

    [1000, phone]

    true

    需要注意的是,在用Collection创建集合时是以实现类ArrayList的实例和实现类HashSet的实例来当做Collection来使用的。

    List接口

    特点:List接口能够精确地控制每一个元素插入的位置,用户可以通过索引来访问集合中指定的元素,List还有一个特点就是元素的存入顺序与取出顺序相一致。

    (1)、迭代器(vector)

    既然我们已经存储了很多元素,并且也做到了增与删,但我们可不可以遍历打印所以元素呢? 迭代器(vector) 它可以

    创建了bianli的对象后,可以这样使用迭代器(vector)

    (2)、ArrayList实现类

    其中ArrayList(效率高但线程不安全)是List的主要实现类,它是一个数组队列,相当于动态数组。虽然ArrayList的查询效率很高,非常适合做大量的查询操作,但不适合大量的增删操作,所以为了解决这一问题就添加了LinkedList实现类

    (3)、LinkedList实现类

    创建了LinkedList集合后,便可使用以下方法(想了解更多请查找JAVA基础类库):

    void add(int index, Objecto)     将o插入索引为index的位置

    void addFirst(Objecto)           将o插入集合的开头

    void addLast(Objecto)            将o插入集合的结尾

    ObjectremoveFirst()              删除并返回集合的第一个元素

    ObjectremoveLast()               删除并返回集合的最后一个元素

    LinkedList对增加和删除的操作高效且便捷

    2、Set集合

    Set集合中的元素是无序的、不可重复的。但这里的无序性不等于随机性,无序性指的是元素在底层存储位置是无序的。

    Set

    接口的主要实现类是HashSet和TreeSet。

    (1)HashSet集合

    hashCode()

    是算出一个值后,元素然后去找集合的位置,如果该位置没有元素,则直接存入;但如果该位置有元素,则用equals()来 判断是否相同,相同则不存储,否则在该位置上存储两个元素(一般不可能重复),所以在一个自定义的对象想正确存入HashSet集合时,那么应该重写自定义对象的 hashCode() 和 equals()方法。

    (2)TreeSet集合

    TreeSet底层是用自平衡的排序二叉树实现的,所以它既能保证元素的唯一性,又可以对元素进行排序。

    其中Tree有两种排序方法:自然排序(默认条件下)与定制排序。 默认排序便不多说,知道有一个方法compareTo(Object obj) 是用来比较元素之间的大小关系,例如:obj1.compareTo(obj2),若方法返回0,则相等;若方法返回正整数,则说明obj1大于obj2;若方法返回负整数,则说明obj1小于obj2.

    而定制排序。。。。。emmmm其实就是继承了Comparator接口后,在自定义的子接口中实现一个campare方法,通过返回正负整数还有零,来进行排序, 从而可以达到降序排列等定制排序的目的。

    Set集合中的元素是无序的、不可重复的。但这里的无序性不等于随机性,无序性指的是元素在底层存储位置是无序的。

    相关文章

      网友评论

        本文标题:做一只小白,从根本上认识java

        本文链接:https://www.haomeiwen.com/subject/savfrktx.html