JAVA基础----集合
来源:互联网 发布:超级优化女主角有谁 编辑:程序博客网 时间:2024/06/18 14:33
集合体系:
Collection:
|--List:有序的,带索引的,通过索引就可以精确的操作集合中的元素,
元素是可以重复的。
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可以存储重复元素的,不能保证元素的唯一性。
|--Set:不包含重复元素的集合,不保证顺序。
而且方法和Collection一致。Set集合取出元素的方式只有一种:
迭代器。
|--HashSet:哈希表结构,不同步,保证元素唯一性的方式依赖于:hashCode(),equals()方法。查询速度快。
|--TreeSet:可以对Set集合中的元素进行排序。
使用的是二叉树结构。如何保证元素唯一性的呢?
使用的对象比较方法的结果是否为0,是0,视为相同元素不存。元素的排序比较有两种方式:
1,元素自身具备自然排序,其实就是实现了Comparable接口重写了compareTo方法。
如果元素自身不具备自然排序,或者具备的自然排
序不是所需要的,这时只能用第二种方式。
2,比较器排序,其实就是在创建TreeSet集合时,
在构造函数中指定具体的比较方式。
需要定义一个类实现Comparator接口,重写compare方法。Map集合特点;
1,内部存储的都是键key值value对。
2,必须要保证的键的唯一性。
Map常见功能。
1,存储。v put(k,v);
2,获取。v get(k);
3,移除。v remove(k);
4,Set<k> keySet();
5,Set<Map.Entry<k,v>> entrySet();
6,Collection<v> values();
|--Map
|--Hashtable:数据结构:哈希表。是同步的,
不允许null作为键和值。被hashMap替代。
|--Properties:属性集,键和值都是字符串,
而且可以结合流进行键值的操作。
|--HashMap:数据结构:哈希表。不是同步的,允许null作为键和值。
|--LinkedHashMap:基于链表+哈希表。
可以保证map集合有序(存入和取出的顺序一致)。
|--TreeMap:数据结构:二叉树。不是同步的。
可以对map集合中的键进行排序。
Map集合的遍历方式
方式1:根据键找值
获取所有键的集合
遍历键的集合,获取到每一个键
根据键找值
使用增强for迭代,原理是一样的。
获取所有键值对对象的集合
遍历键值对对象的集合,获取到每一个键值对对象
根据键值对对象找键和值
增强for迭代
什么时候使用map集合呢?
分析问题时出现对应关系,必须想到map集合。
如果对应关系中出现了有序的数字,想到数组。
常见的数据结构:
栈:
特点:
先进后出
特点:
先进先出
特点:
增删慢,查询快
没找到合适的图,简单说一下吧。
先说为什么查询快:
因为数组都有固定的索引,通过索引可以快速的查找到所对应的值
比如,二分查找法。
增删慢是因为:
假如你的数组长度为100,里面都存满了值。
如果你想删掉第一个,那索引0中的值就需要于索引1中的值互换
........长度很长的数组每一个都要互换,是不是很慢。
特点:
增删快,查找慢
这中结构查找慢是因为,必须要通过第一个才能找到第二个,
必须通过第二个才能找到第三个.......
特点:
增删慢,查询快
增删慢是因为,他的顺序结构非常明确。
每增删一个值都需要进行一系列的判断。
查找快,二分查找;
特点:
增删慢,查询快
它也是将值通过一系列的算法,存储进内存的。
而查时可以通过存时的算法,算出它应该在的位置。
看集合对象的小技巧:
集合分体系。List Set
子类对象的后缀名是所属体系,前缀名是数据结构名称。
|--ArrayList :看到array,就知道数组,查询速度快。
|--LinkedList:看到link,就知道链表,增删速度快。
Set:
|--HashSet:看到hash,就知道哈希表,查询速度更快,并想到元素唯一,通过hashCode(),equals方法保证唯一性。
---------------------------
List:
特有方法:
void add(int index, E element) : 在当前集合中指定位置 添加给定的元素
Object get(int index) 返回集合中指定位置的元素。
int indexOf(Object o)返回此集合中第一次出现的指定元素的索引;如果此集合不包含该元素,则返回 -1。
E set(int index, E element)用指定元素替换集合中指定位置的元素
ListIterator<E> listIterator() 返回此集合元素的列表迭代器
并发修改异常产生的原因及解决方案:
在使用迭代器遍历的过程中,原有集合中的元素个数不能发生改变,否则抛出 并发修改异常
解决方式:
普通for:
添加的新元素到原有集合的末尾添加
添加的新元素在Java元素的后面添加
Vector:
特有方法:
public void addElement(Object obj) 添加元素到集合 ———— add(Obejct obj)
public Object elementAt(int index) 返回集合中给定位置上的元素 ---- get(int index)
public Enumeration elements()返回此向量的组件的枚举 --- iterator()
boolean hasMoreElements() ---- hasNext()
Object nextElement() --- next();
LinkedList:
特有方法:
public void addFirst(Object e)将指定元素插入此列表的开头
public void addLast(Object e)将指定元素添加到此列表的结尾。
public Object getFirst()返回此列表的第一个元素
public Object getLast()返回此列表的最后一个元素。
public Object removeFirst()移除并返回此列表的第一个元素。
public Object removeLast()移除并返回此列表的最后一个元素。
Collections:
集合工具类
是集合框架中的用于操作集合的工具类。
提供了很多的静态方法:比如:对list排序,二分查找,比如可以获取最值等。
其中一组可以非同步集合转成同步 集合的方法。
- [ java ] java基础集合!
- JAVA基础之集合
- java基础之集合
- java基础:集合connection
- java基础之 集合
- java基础10 集合
- java基础--集合
- java基础---集合类
- java基础知识点集合
- java基础 集合迭代器
- JAVA基础之集合
- Java集合框架基础
- java基础--HashSet集合
- java基础_09_集合
- 【Java基础】集合
- Java基础之 集合
- java基础__集合
- JAVA基础集合
- Linked List Cycle
- HDU 1051 Wooden Sticks
- 嘻唰唰第一批之商品销售之静态运用
- PayPal高级工程总监:读完这100篇论文 就能成大数据高手
- 《高效程序员的45个习惯》notes
- JAVA基础----集合
- IOS中http请求的cookie查看,删除,添加
- [Win32SDK基本] Combo Box
- 数据库进行外键关联失败的解决方法
- IOS app 加急审核网址
- unity 3d实例化位置出现布置?
- 使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- C++模板详解
- UI之如何打磨设计能力?