zoukankan      html  css  js  c++  java
  • Java基础22-集合类1(概况、List接口)

    一、集合类概述

    在java2(jdk1.2)之前,java是没有完整的集合框架的。它只有一些简单的可以扩展的容器类,比如vector,stack类等。

    我们知道数组可以存储多个数据,既然数组可以存储多个数据,那为什么我们还需要集合类呢?

    我们先来看一下数组的弊端:

    1.长度是不可变的,一旦数组初始化之后,长度是固定的。

    2.在N地方需要存储多个数据,得专门去编写数组的操作方法,如此以来,没有体现DRY原则,维护成本高。

    3.即使每一个人都要使用到数组类,但是不同的人定义的类名和方法名是不同的,实现细节也是参差不齐的

    所以SUN公司就自己定义好了容器类,每一个开发者只管调用即可。

    (1)什么是集合框架?

    集合类存放于java.util包中。

    集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用

    集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

    (2)为什么需要集合框架?

    1.功能的复用
    2.专注于业务开发,而不是数据结构和算法(底层都对应着某一种数据结构和算法)

    (3)常用集合类

    set(集):集合中的对象不按特定方式排序,不允许元素重复
    list(列表):集合中的对象,按照索引位置排序,允许元素重复
    Map(映射):集合中每一个元素都包含一对key和value对象,不允许key对象重复,值对象可以重复

     主要有两个分支:Collection和Map

    二、List集合

    1. List接口特点:

    ①有序性,元素的存取都是有序的,所以它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素。

    List允许存储项的值为空,也允许存储相等值的存储项

    ②重复性,可以存在重复的元素。

    2.List接口中常用方法

    (1)ArrayList类

    ArrayList类是java集合框架出现之后取代vector类的:
    ArrayList:所有方法都没有使用synchronized修饰符,线程不安全,性能相对较高。

    ArrayList集合数据存储的结构是数组结构。

    它的特点是:由于数据是存入数组中的,所以元素增删慢,查找快。

    List<String> list = new ArrayList<String>();
    //1,添加元素。
    list.add("小红");
    list.add("小梅");
    list.add("小强");
    //2,插入元素。插入元素前的集合["小红","小梅","小强"]
    list.add(1, "老王"); //插入元素后的集合["小红","老王","小梅","小强"]
    //3,删除元素。
    list.remove(2);// 删除元素后的集合["小红","老王","小强"]
    //4,修改元素。
    list.set(1, "隔壁老王");// 修改元素后的集合["小红","隔壁老王","小强"]

    (二)LinkedList

    LinkedList集合数据存储的结构是链表结构。是一个双向链表

    1.特点是:方便元素添加、删除的集合

    2.特有方法是:

    LinkedList<String> link = new LinkedList<String>();
            //添加元素
            link.addFirst("abc1");
            link.addFirst("abc2");
            link.addFirst("abc3");
            //获取元素
            System.out.println(link.getFirst());
            System.out.println(link.getLast());
            //删除元素
            System.out.println(link.removeFirst());
            System.out.println(link.removeLast());

    3.linkedlist是线程不安全的类,在多线程环境下需要保证线程安全
     LinkedList list=CollectionsynchronizedList(new Linkedlist)

    4.linkedlist和arraylist共同特点:

    1.允许元素重复
    2.会记录先后添加的顺序

    总结:

    数组结构算法:插入和删除操作性能低,查询和更改较快。
    链表结构算法:插入和删除操作性能快,查询和更改较慢。
    使用的选择:根据各自性能特点,在开发中使用ArrayList较多

  • 相关阅读:
    利用WEBPART部件之间的数据连接功能,筛选知识库
    + 网页制作效果常用代码
    你或许还未听说过的一些ASP.NET 2.0要诀 [转]
    关闭Windows Server 2003关机事件跟踪程序
    Windows SharePoint Services 3.0 应用程序模板中文版(图解)
    零基础学Python不迷茫——基本学习路线及教程!
    小白安装Python环境详细步骤!
    Python入门第一课——Python的起源、发展与前景!
    7款公认比较出色的Python IDE,你值得拥有!
    Windows平台下gitbook的安装与使用
  • 原文地址:https://www.cnblogs.com/LuckyGJX/p/9099445.html
Copyright © 2011-2022 走看看