集合
来源:互联网 发布:java的反射机制详解 编辑:程序博客网 时间:2024/05/22 11:43
- 集合的由来:对象用于封装特有的数据,对象多了需要存储,如果对象的个数不确定,及使用集合容器来存储。
- 集合的特点:用于存储对象的容器,集合的长度是可变的,集合中不可以存储基本数据类型
- Collection的常见方法:
1 .add(Object ob)添加。
2.addAll(Collection coll)添加所有。
3 .remove(Object ob)删除。
4 .removeAll(Collection<> coll )清除多个。
5 .clear()清空所有
6 .contains(Object obj)判断是否包含
7.containsAll(Collection<> coll)判断是否包含一堆
8.isEmpty()判断是否为空
9.size()获取集合的长度
10.iterator()迭代器,取出元素的方法,返回值为Iterator
11.returnAll(Collection<> coll)返回两个集合的交集
12.toArarry()讲集合变换成数组 - 集合的遍历方法,第一种迭代器的一种方式:
Iterator it = coll.iterator()while(it.hasNext()){ it.next();}
迭代器遍历的另外一种方式:
for(Iterator it = coll.iterator();it.hasNext();){ it.next();}
- 通过对源码的分析得出,迭代器其实就是实现了Iterator接口的每一个容器的内部对象。该对象必须依赖于具体容器,因为每个容器的数据结构都不同,所以该迭代器对象是在容器中进行内部实现。
- List特点:有序,存入和取出的顺序是一致的,元素都有索引(角标),元素可以重复。Set的特点:元素不能重复,无序。
- 在迭代的过程中不要使用集合操作元素容易出现异常 (ConcurrentModificationException)如:
Iterator it = coll.iterator() while(it.hasNext()){ coll.add("d");//}
- 解决上述问题可以使用Iterator的子接口ListIterator来完成:
ListIterator it=coll.listIterator() while(it.hasNext()){ it.add("d");}
List:
Vector:内部是数组数据结构,是同步的
ArrayList:内部是数据数据结构,不同步的。替代了Vector查询速度快
LinkedList:内部是链表数据结构,是不同步。增删快。关于Vector的的使用:
Vector v = new Vector(); v.addElement("abc1"); v.addElement("abc2"); Enumeration en = v.elements(); while(en.hasMoreElements()){ en.nextElement();//可以使用迭代器进行替换操作 }
- 关于LinkedList:
LinkedList link = new LinkedList(); link.addFirst("abc1");
- ArrayList:
集合里添加对象其实是存的该对象的引用,在1.5版本以后可以直接al.add(5),自动装箱
13.Set接口中分方法和Collection一致
|— HashSet 内部数据结构是哈希表,取出方式只有迭代器,无序不重复,不同步,在存储元素的时候,使用的元素的hashCode方法来确定位置,如果位置相同,在通过元素的equals来确定是否相同,它的之类LinkedHashSet,可以保证唯一的情况下有序
| TreeSet 可以对set集合中的元素进行指定顺序的排序,不同步
哈希表确定元素是否相同
1,判断的是两个元素的哈希值是否相同,如果相同,在判断两个对象的内容是否相同。
2,判断哈希值相同,其实判断的是对象的hashCode方法。判断内容相同,用的是equals方法
3如果哈希值相同,内容不同,那么对象在哈希表的位置可以顺延或者挂在该位置上(该几率比较小)
注意:如果哈希值不同,是不需要判断equals的
阅读全文
1 0
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 外卖“搭上”高铁已成事实,然叫好叫座难兑现?
- python链家网二手房数据爬取
- 【字符串·ac自动机】uva1449Dominating Patterns
- 机器学习入门-线性回归
- Linux启动/停止/重启XAMPP(禅道)
- 集合
- perl_正则表达式
- mysql(5.6)分区(一)分区键,主键和唯一键
- 网站开发(一)环境配置及模板准备
- mysql 数据引擎
- 完美解决Python2操作中文名文件乱码的问题
- Codeforces
- 矩形覆盖(剑指Offer)
- for循环、forEach、map、filter区别及效率分析