List接口以及数据结构存储特点

一、简述List接口的特点
1、存取有序的集合
2、有索引值
3、元素可以重复

二、hashCode和equals方法
简述HashCode去除重复元素的原理
1、调用被添加元素的HashCode(),和hashSet中已有元素的HashCode()进行比较
2、如果不同,直接存储
3、如果相同,调用equals方法比较是否相同
4、不相同,直接存储元素
5、相同,直接舍弃,不存储

三、数据结构
简述常见的数据结构中元素的存取特点
1、栈:stack,又称堆栈,对元素的存取特点是:先进后出。
 即,存进去的元素,要在它后面元素一次取出后,才能取出该元素。
2、队列:queue,简称队,对元素的存取特点是:先进先出。
 即:存进去的元素要在它前边的元素取出后才能取出。
3、数组:Array,是有序的元素数列,对元素的存取特点是:
     1)、查找元素快;通过索引值直接查找数组中的元素。
     2)、增删元素慢;
        (1)、指定索引位置增加元素,需要创建一个新的数组,将指定元素

存储在指定的索引位置,再把元素组元素根据索引复制到新数组对应索引的指定位置。
        (2)、删除指定索引值的元素,需要建立一个新数组,将原数组里面的元素放到新数组中,
            需要删除的指定索引值对应的元素,不放在新数组中。

4、链表:linkedList,对元素存取特点:
    1)、多个节点之间通过地址值进行连接。
 
    2)、查找元素慢

3)、增删元素快

增加元素:只需要修改连接下一个元素的地址

删除元素: 只需要修改连接上一个元素的地址

四、Comparable 和 Comparator 比较器

简述Comparable和Comparator两个接口的区别

Comparable:强行对实现它的每个类的对象进行整体排序。

这种顺序被称为类的自然顺序

类的compareTo方法被称为自然的比较方法,只能在类中实现compareTo()

一次,不能经常修改类的代码实现自己想要的顺序。

实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序

对象可以用作有序映射中的键或者有序集合中的元素,不用指定比较器。

Comparator:强行对某个对象进行整体排序。

可以将Comparator传递给sort方法(Collections.sort或Arrays.sort)

从而允许在排序顺序上实现精准控制

还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,

或者为那些没有自然顺序的对象collection提供排序。

原文地址:https://www.cnblogs.com/extend-HG/p/9578172.html

时间: 2024-10-23 15:50:03

List接口以及数据结构存储特点的相关文章

不明白的sizeof(enum)数据结构存储问题

不明白的sizeof(enum)数据结构存储问题 typedef struct weekday_st { enum week {sun=123456789,mon,tue,wed,thu,fri,sat,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak}; enum day{monring, moon, aftermoon}; }weekday_st; int main(int

redis数据结构存储Dict设计细节(redis的设计与实现笔记)

说到redis的Dict(字典),虽说算法上跟市面上一般的Dict实现没有什么区别,但是redis的Dict有2个特殊的地方那就是它的rehash(重新散列)和它的字典节点单向链表. 以下是dict用到的结构: typedef struct dictEntry {//字典的节点 void *key; union {//使用的联合体 void *val; uint64_t u64;//这两个参数很有用 int64_t s64; } v; struct dictEntry *next;//下一个节点

redis数据结构存储Linked List设计细节(redis的设计与实现笔记)

redis里拥有一个灵活扩展且获取表头表尾复杂度为O(1)的双端列表,分为list和listNode2部分组成. list: 1 typedef struct list {//链表 2 listNode *head;//链表头 3 listNode *tail;//链表尾 4 void *(*dup)(void *ptr); //复制函数指针 5 void (*free)(void *ptr); //释放内存函数指针 6 int (*match)(void *ptr, void *key); /

java中常用的数据结构--Collection接口及其子类

java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.集合和数组的区别 二.Collection集合和Map集合 三.Collection接口 1.定义 public interface Collection<E> extends Iterable<E> {} 它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:添加.删除.清空.遍历(读取).是否为空.

实现键值对存储(三):Kyoto Cabinet 和LevelDB的架构比较分析

译自  Emmanuel Goossaert (CodeCapsule.com) 在本文中,我将会逐组件地把Kyoto Cabinet 和 LevelDB的架构过一遍.目标和本系列第二部分讲的差不多,通过分析现有键值对存储的架构来思考我应该如何建立我自己键值对存储的架构.本文将包括: 1. 本架构分析的意图和方法 2. 键值对存储组件概览 3. Kyoto Cabinet 和LevelDB在结构和概念上的分析 3.1 用Doxygen建立代码地图 3.2 整体架构 3.3 接口 3.4 参数化

Oracle官网JNI简介和接口函数分析

第一章 概述 本章主要介绍JNI(Java Native Interface),JNI是一种本地编程接口.它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言.C++.汇编,写的应用和库之间的交互操作. JNI的最大优势在于没有强加任何限制在JAVA虚拟机的下层实现上,因此,JAVA虚拟机供应商能够提供JNI的支持而不影响虚拟机的其他部分,程序员只需写出一个版本的本地应用和库,就可使之运行在一切支持JNI的JAVA虚拟机上. 本章包含了以下的要点: ? JNI概述 ? 目标 ?

java数据结构与算法之顺序表与链表深入分析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 ??数据结构与算法这门学科虽然在大学期间就已学习过了,但是到现在确实也忘了不少,因此最近又重新看了本书-<数据结构与算法分析>加上之前看的<java数据结构>也算是对数据结构的进一步深入学习了,于是也就打算

[转]Oracle DB 管理数据库存储结构

? 描述块中表行数据的存储 ? 创建和管理表空间 ? 获取表空间信息 表数据的存储方式 创建表时,还会创建一个用于保存其数据的段.表空间包含一个段集合. 从逻辑上来说,表包含许多行列值.行最终以行片段的形式存储在数据库块中.之所以称其为行片段,是因为在某些情况下可能不会在一个位置存储完整的行.当插入的行太大而无法装入单个块时(链接行),或当更新导致现有行超出当前块的可用空闲空间时(迁移行),就会发生这种情况.当表中的列多于255 列时,也会使用行片段.在这种情况下,这些行片段可能位于同一个块(块

关于LUN和存储卷的区别详解

一.LUN的概念 LUN的全称是Logical Unit Number,也就是逻辑单元号.我们知道SCSI总线上可挂接的设备数量是有限的,一般为6个或者15个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了. 而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID.每个Target下都可以有多个LUN Device