1.ArrayList和LinkedList
List接口是Collection的子接口,用于定义线性表数据结构。
可以将List理解为存放对象的数组,只不过其元素个数可以动态的增加或减少。
List接口的两个常见实现类为ArrayList和LinkedList,分别用动态数组和链表的方式实现了List接口
可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性能上有一定的差别。
ArrayList更适合于随机访问而LinkedList更适合于插入和删除。
在性能要求不是特别苛刻的情形下可以忽略这个差别。
2.get和set
List除了继承Collection定义的方法外,还根据其线性表的数据结构定义了一系列方法,其中最常用的就是基于下标的get和set方法:
E get(int index)
获取集合中指定下标对应的元素,下标从0开始。
E set(int index,E elment)
将给定元素存入给定位置,并将原位置的元素返回
3.插入和删除
List根据下标的操作还支持插入与删除操作。
void add(int index,E element)
将给定的元素插入到指定位置,原位置及后续元素都顺序向后移动。
E remove(int index):
删除给定位置的元素,并将被删除的元素返回。
4.subList
List的subList方法用于获取子List.
需要注意的是,subList获取的List与原List占有相同的存储空间,对子List的操作会影响原List。
List<E> subList(int fromIndex,int toIndex);
fromIndex和toIndex是截取子List的首尾下标(前包括,后不包括)
5.List转换为数组
List的toArray方法用于将集合转换为数组。但实际上该方法是在Collection中定义的,所以所有的集合都具备这个功能。
其有两个方法:
Object[] toArray()
<T> T[] toArray(T[] a)
其中第二个方法是比较常用的,我们可以传入一个指定类型的数组,该数组的元素类型应与集合的元素类型一致。
返回值则是转换后的数组,该数组会保存集合中所有的元素。
6.数组转换为List
Arrays类中提供了一个静态方法asList,使用该方法我们可以将一个数组转换为对应的List集合。
其方法定义为:
static <T> List<T> asList<T...a>
返回的List的集合元素类型由传入的数组元素类型决定。
并且要注意的是,返回的集合我们不能对其增删元素,否则会抛出异常。并且对集合的元素进行修改会影响数组对应的元素。
7.Collections.sort方法实现排序
Collections是集合的工具类,它提供了很多便于我们操作集合的方法,其中就有用于集合排序的sort方法。
该方法定义为:
void sort(List<T> list)
该方法的作用是对给定的集合元素进行自然排序。
8.Comparable
Collection的sort方法是对集合元素进行自然排序,那么两个元素对象之间就一定要有大小之分。这个大小之分是如何界定的?
实际上,在使用Collection的sort排序的集合元素都必须是Comparable接口的实现类,该接口表示其子类是可比较的,
因为实现该接口必须重写抽象方法:
int compareTo(T t);
该方法用于使当前对象与给定对象进行比较。
若当前对象大于给定对象,那么返回值应为>0的整数。
若小于给定对象,那么返回值应为<0的整数。
若两个对象相等,则返回0
9.Comparator
一旦Java类实现了Comparable接口,其比较逻辑就已经确定;
如果希望在排序的操作中临时指定比较规则,可以采用Comparator接口回调的方式。
Comparator接口要求实现类必须重写其定义的方法:
int compare(T o1,T o2)
该方法的返回值要求:
若o1>o2则返回值应>0
若o1<o2则返回值应<0
若o1=o2则返回值应为0
集合操作--线性表
时间: 2024-10-06 09:07:08
集合操作--线性表的相关文章
JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表
Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Collection; import day02.Point; /** * 操作集合元素相关方法 * @author adminitartor * */ public class Collection_Remove { public static void main(String[] args) { C
JAVASE02-Unit05: 集合操作 —— 查找表
Unit05: 集合操作 -- 查找表 使用该类测试自定义元素的集合排序 package day05; /** * 使用该类测试自定义元素的集合排序 * @author adminitartor * */ public class Point implements Comparable<Point>{ private int x; private int y; public Point(int x, int y) { super(); this.x = x; this.y = y; } pub
集合线性表--List之ArrayList
集合操作——线性表 List: add().remove().subList().list.toArray().array.asList(). List排序: Collections.sort(list); Comparable. comparator ListList接口是Collection的子接口,用于定义线性表数据结构:可以将List理解为存放对象的数组,只不过其元素个数可以动态的增加或减少.并且List是可重复集 ArrayList和LinkedList List接口的两个常见
ListGetandSetDemo 集合操作get set remove add方法
/** * 集合操作 --线性表 概念: List是Collection的子接口,用于定义线性表数据结构. * 可以将List理解为存放数据的数组.只不过个数可以动态的删除和增加. * * List有两个常用的实现类,ArrayList和LinkedList. 两者在功能上相同,只是性能上有些差异. * ArrayList是用动态数组的方式体现,更适合随机访问. * LinkedList是用链表的方式体现,更适合增删插入. 如果对性能要求不苛刻,可以忽略性能差异. * * List除了继承Col
第六课 线性表的相关操作
线性表的讨论 线性表的操作 线性表的一些常用操作 创建线性表 销毁线性表 清空线性表 将元素插入线性表 将元素从线性表中删除 获取线性表中某个位置的元素 获取线性表的长度 先把方法声明出来,下一节课开始实现: #ifndef _EG_2_1_H_ #define _EG_2_1_H_ typedef void List; typedef void ListNode; /* 该方法用于创建并且返回一个空的线性表 */ List* List_Create(); /* 该方法用于销毁一个线性表list
SQL查询初学者指南读书笔记(五)集合操作与多表查询介绍
PART III:Thinking in Sets CHAPTER7 Thinking in Sets The three mostcommon set operations are as follows. Intersection Difference Union 在SQL中相应的关键词分别是 Intersection Except Union 实际数据库实现一般支持以下相应的数据库集合操作 INNER JOIN OUTER JOIN UNION JOIN 不过其区别是前者集合操作涉及表中所有
线性表的本质
有时候就会有一种感觉,尽管学习了C和C++,看到程序都差不多看得懂,但是真正让自己去开发一个软件或者独立性的去写一些代码的时候还是很困难,我们都知道程序的灵魂是算法,一个程序是算法和数据结构的相结合,在接下来来的寒假时光中,笔者将会学习数据结构的一些基础知识,并且加上个人的一些理解,和大家一起分享. 下面我将从4个方面介绍线性表的基本和常用知识.线性表的本质,线性表的相关操作,线性表的顺序存储结构,线性表链式存储结构. 一个线性表是是n个数据元素的有限序列,有以下定义: 线性表是零个或者多个数据
数据结构-线性表-顺序表
总括: 线性表是一种最简单的数据结构,线性表的主要操作特点是可以在任意位置插入和删除一个数据元素. 线性表可以用顺序存储结构和链式存储结构存储,用顺序存储结构实现的线性表称为顺序表,用链式存储结构实现线性表称为链表. 1,线性表概述: 线性表:线性表是一种可以在任意位置进行插入和删除数据元素操作的,有n个(n>=0)个相同类型数据元素a0,a1,. . .an组成的线性结构. 线性表抽象数据类型:抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合:因此,线性表的抽象数据类型主要包括两个方
数据结构(二)——线性表简介
数据结构(二)--线性表简介 一.线性表简介 1.线性表简介 线性表是具有相同类型的n个数据元素的有限序列A0,A1,A2,...,An-1.Ai是表项,n是表的长度. 2.线性表的表现形式 线性表的表现形式:A.零个或多个数据元素组成的集合B.数据元素在位置上是有序排列的C.数据元素的个数是有限的D.数据元素的类型必须相同 3.线性表的性质 线性表的性质:A.A0为线性表的第一个元素,只有一个后继B.An-1为线性表的最后一个元素,只有一个前驱C.除A0与An-1外的其它元素既有前驱又有后继D