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基础--JAVA API集合框架(其他集合类,集合原理)15