Java基础22-集合类1(概况List接口)

Posted LuckyGJX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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较多

以上是关于Java基础22-集合类1(概况List接口)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA-基础(List及其子类)

java基础(17)集合类(1:Collection)

JAVA基础--JAVA API集合框架(其他集合类,集合原理)15

尚硅谷_Java零基础教程(集合Collection:list,set;map)-- 学习笔记

Java 基础知识点 笔记总结

集合框架基础知识-----java基础知识