day03【List、Set】

List接口
java.util.List接口继承Collection接口.
在List集合中允许出现重复元素,所有元素是以一种 线性方式进行存储的,在程序中可以通过索引来访问集合指定元素.
特点:
  1. 元素有序,存取顺序一致
  2. 元素具备索引.
  3. 可以存储重复元素
List接口中的常用方法:(索引相关)
public void add(int index, E element); 将指定元素添加到指定位置
public E remove(int index); 移除集合中指定位置的元素,返回被移除的元素
public E set(int index, E element); 修改集合中指定索引位置的元素,返回修改之前的元素
public E get (int index); 返回集合指定索引位置的元素
public List< E> subList(int fromIndex, int toIndex) 截取集合的一部分并返回新集合
  • ArrayList集合
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以 ArrayList 是最常用的集合。
  • LinkedList集合(双向链表结构)
java.util.LinkedList 集合数据存储的结构是链表结构。方便元素添加、删除的集合。
方法(LinkedList中有大量头尾操作方法)
public void  addFirst(E e) :将指定元素插入此列表的开头。
public void  addLast(E e) :将指定元素添加到此列表的结尾。
public E  getFirst() :返回此列表的第一个元素。
public E  getLast() :返回此列表的最后一个元素。
public E  removeFirst() :移除并返回此列表的第一个元素。
public E  removeLast() :移除并返回此列表的最后一个元素。
public E  pop() :从此列表所表示的堆栈处弹出一个元素。(弹的是头)
public void  push(E e) :将元素推入此列表所表示的堆栈。
public boolean  isEmpty() :如果列表不包含元素,则返回true。
Set接口
java.util.Set 接口继承自 Collection 接口,与 Collection 接口中的方法基本一致.但是Set接口元素无序,并且以 某种规则保证存入的元素不会出现重复.
特点:
  1. 无序,不能保证存取顺序一致
  2. 元素不能重复 元素唯一
  • HashSet集合
java.util.HashSet 是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不能保证不一致)。 java.util.HashSet 底层的实现其实是一个 java.util.HashMap 支持
特点:
tHashSet 是根据对象的哈希值来确定元素在集合中的存储位置, 因此具有良好的存储和查找性能。保证元素唯一性的方式依赖于: hashCode 与 equals 方法。
  • LinkedHashSet
通过链表保证存取顺序一致,但是同样没有索引.
  • TreeSet集合
构造方法摘要
TreeSet()
TreeSet(Comparator<? super E> comparator)
特点:无序,不重复,没有索引,可以排序
字符串是按照字典顺序来排序
重点:
怎么去重的!!!---->compareTo的返回值是0的话,就认为是重复元素;
排序方式:用的二叉树,根据compareTo的返回值如果大于零跑右边,小于跑左边
数据结构
  • 栈:stack
运算受限的线性表,其限制是仅允许在标的一段进行插入和删除操作,不允许在其他位置进行增删改查.(存取方式类似手枪弹夹存取子弹)
特点:
1.先进后出.先存进的元素要后它的元素取出之后才能取出
2.栈的入口和出口都是栈的顶端.
压栈:存元素.将元素放到栈的顶端,栈中已有元素一次向栈底方向移动一个位置
弹栈:取元素.把栈顶端的元素取出,栈中已有元素一次向栈顶方向移动一个位置
  • 队列:queue
它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,
而在表的另一端进行删除。(类似排队)
特点:
1.先进先出
2.队列的入口和出口各在队列的两端.
  • 数组:Array
是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。通过元素编号可以快速找到元素.
特点:
1. 查找元素快,根据索引可以快速找到元素
2. 增删元素慢.因为数组有定长的特性.需要创建一个新的数组,
  • 链表:linke list
由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。链表结构有单向链表与双向链表,讲的是 单向链表
特点:
1.多个结点之间,通过地址进行连接.每个结点包括包括 数据域指针域.
2.查找元素慢:查找元素通过连接的结点,依次向后查找.
3.增删元素快:(1).增加元素:只需要修改连接下个元素的地址即可
(2)删除元素:只需要修改连接下个元素的地址即可。
原因:不创建新的对象,不操作其他元素.
  • 红黑树:(二叉树的一种) binary tree
每个结点不超过2的有序 树(tree).

红黑树的出现是为了提高搜索效率的.
可变参数
修饰符 返回值类型 方法名(参数类型... 形参名){  }
等价于
 修饰符 返回值类型 方法名(参数类型[] 形参名){  }
但是后一种只能传递数组,可变参数在方法中唯一并且必须处于末尾位置.因为不确定其参数个数.
Collections工具类
ava.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:
  • public static <T> boolean addAll(Collection<T> c, T... elements) :
往集合中添加一些元素。
  • public static void shuffle(List<?> list) :
打乱集合顺序。
  • public static <T> void sort(List<T> list) :
将集合中元素按照默认规则排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ) :
将集合中元素按照指定规则排序。

比较器
  • 内比较器 Comparable
需要实现Comparable接口,完成对Comparable接口的compareTo方法的重写, 排序的规则定义在compareTo方法中.
  • 外比较器 Comparator
在需要比较的地方直接实现Comparator接口的匿名内部类中重写compare方法,比较的规则写在compare中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值