集合框架List和Set
来源:互联网 发布:什么是java多线程 编辑:程序博客网 时间:2024/05/20 13:19
List提供了增删改查的动作,
增加:add(element),add(index,element);
删除:remove(element) remove(index);
修改:set(index,element);
查询:get(index);
vector:可以增长的数组结构,同步的。效率是非常低的。已经被ArrayList替代。
ArrayList:是数组结构的,长度是可变的(原理是创建新数组+复制数组),查询的速度很快,增删较慢,不同步的。
LinkedList:是链表结构,不同步的,增删速度很快,查询速度较慢。
可用于实现堆栈,队列。
堆栈:先进后出:first in last out:filo。
队列:先进先出:first in first out:fifo.
list可以存储重复元素,如果需求中要求容器中的元素必须保证唯一性则list不能保证。但保证了元素的顺序。
Set:不包含重复元素的集合,不保证顺序,而且方法和collection一致。set集合取出元素的方式只有一种:迭代器。
hashSet:哈希表结构,不同步,保证元素唯一性的方式依赖于:hashcode(),equals()方法。
哈希算法:也称散列
数组中存储的都是元素《--》哈希值对应关系
该数组称为哈希表。查询速度要比数组快。
和数组相比也有自己的弊端:重复元素存不进去,但会保证元素唯一性。数组则无法保证。
当哈希值冲突时:
即元素哈希值一致了,这时会再次判断元素的内容是否相同(要依赖于equals方法)。若equals返回true,就意味着两个元素相同,则不会存入。若返回false,则两个元素不相同,存储,继续通过算法算出位置,称为拉链法。
TreeSet:基于TreeMap的navigableSet实现,使用元素的自然顺序对元素进行排序。可以对Set集合中的元素进行排序。使用的是二叉树结构。使用的对象比较方法的结果是否为零,是零,视为相同元素,则不用存入。
TreeSet集合中元素的比较有两种方式:1,元素自身具备自然排序,其实就是实现了Comparable接口,重写了comparableTo方式。
2,比较器,其实就是在创建TreeSet集合时,在构造函数中指定具体的比较方式。需要定义一个类,实现Comparable接口,重写comparable方法。
再往集合中存储对象时,通常该对象都需要覆盖hashCode,equals同时创建Comparable接口,建立对象的自然排序。通常还有一个方法也会复写toString();
比较器练习:
对字符串进行长度排序,由短到长。
foreach循环:其实就是增强for循环,
格式:for(数据类型 变量:Collection集合或数组){}
用于遍历collection和数组,通常只能遍历元素,不要再遍历的过程中做对集合元素的操作。
看集合对象:
分体系:List Set
list:新出的子类都是以list结尾的,通常都是非同步的。
ArrayList:数组结构,查询速度快。
linkedList :链表结构,增删速度快。
Set:
HashSet:哈希结构:查询速度更快,元素唯一。通过hashCode(),equals方法保证唯一性。
TreeSet:看到Tree,就知道二叉树,可以排序排序就想到comparable的compareto方法,Comparator的compare方法。
0 0
- 集合框架(List和Set)
- 集合框架List和Set
- Java集合框架 List和Set
- 集合框架--List和Set的特点
- 集合框架List\Set
- 黑马程序员___13java基础 集合框架 LIST和SET集合
- 集合框架(List 、Set)
- 集合框架之一 List-Set
- java集合框架---List/Set
- 集合框架-List与Set
- 集合框架 map,set,list
- java集合框架-List和Set和相关的方法
- Set集合和List集合
- 常用对象API(集合框架-List和Set的特点)
- Java集合框架Collection(List、Set和Map)
- 黑马程序员java学习—集合框架List和Set
- 集合框架中的list、set和map的浅析
- 黑马程序员--集合框架:List、Set和Map体系
- 分布式版本控制Git教程
- dictionary in python demo
- 文60个有用CSS代码片段
- VoltDB 简介
- 01-上传MyEclipse中的项目到SVN
- 集合框架List和Set
- Linux非常有用的快捷键
- 算法学习之路和程序员(技术)学习必读书籍
- Hadoop序列化案例
- oracle视图
- Io流
- UESTC -- 1061 秋实大哥与战争(暴力/set)
- 关于NS9C5262的问题;
- 什么是原子性