关于java的基础---集合
来源:互联网 发布:搭建yum仓库 编辑:程序博客网 时间:2024/06/06 10:45
集合:Set集合:Set集合是最为简单的一种集合,它不存储重复对象,集合中的元素不按特定方式排序
Set接口常见的两个实现类是HashSet和TreeSet。HashSet按照哈希算法来存取集合中的对 象,存取速度比较快。HashSet还有一个子类叫LinkedHashSet,它不仅实现了哈希算法,并且实现了链表结构,链表数据结构能提高数据的插入和删除元素的性能。而TreeSet实现了SortedSet接口,具有排序的功能!
LinkedHashSet集合:
LinkedHashSet按照元素插入的顺序进行迭代,即迭代输出的顺序与插入的顺序保持一致。
2:LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。
HashSet集合:
特点:不能保证元素的排列顺序,顺序有可能发生变化
不是同步的
集合元素可以为null,但只能放入一个null
当HashSet集合中存入一个元素时,HashSet会调用该对象的HashCode()方法来获取该对象的HashCode值,然后根据HashCode值来决定该对象在HashSet中存储的位置。简单的说,HashSet集合判断两个元素相等的标准是通过equals方法比较相等,并且两个方法的HashCode()返回值相等。注意:如果把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其HashCode方法。其规则是如果两个对象通过equals方法比较返回true,其HashCode也应相同。另外,对象中用作equals比较标准的属性,都应该用来计算HashCode的值。
Tip 1:什么是HashCode?
官方定义:HashCode方法返回该对象的哈希值。支持该方法是为哈希表提供一些优点,例如java.util.HashTable提供的哈希表。
1:HashCode的存在主要是用于查找的快捷性,如HashSet,HashTable,HashMap等是用在散列存储结构中确定对象的内存地址的。
2:如果两个对象相同,就适用于equals方法,那么这两个对象的HashCode一定要相同。
3:如果对象的equals方法被重写,那么对象的HashCode也要被重写,并且产生HashCode使用的对象,一定要和equals方法中使用的保持一致
4:两个对象的HashCode相同,并不代表两个对象相同,也就不一定适用equals方法。只能说明这两个对象在散列存储结构中,如HashTable,即”它们在同一个篮子里”
TreeSet集合:
TreeSet集合是SortedSet接口的唯一实现类,TreeSet集合可以确保集合元素处于排序状态。TreeSet集合存在两种排序1.自然排序2.定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是同一个类的对象。TreeSet集合判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0
自然排序:
自然排序使用排序元素的CompareTo方法来比较元素之间的大小关系,然后将元素按照升序排序。
JAVA定义了一个Comparable接口,该接口中定义了一个方法ComparedTo,该方法返回整数值,实现该方法即可排序
Obj1.ComparedTo(obj)==0 证明两个对象相等
Obj1.ComparedTo(obj)>0 证明Obj1大于obj
Obj1.ComparedTo(obj)<0 证明Obj大于obj1
定制排序:
实现Comparator接口,实现int compare(T o1,T o2)方法
List集合
List类型的特征是以线性的方式存储数据,集合中允许存放重复对象。List接口的实现类主要包括:
1:ArrayList--------代表可变长度的数组,允许对元素进行快速的随机访问,但是向ArrayList中插入数据和删除数据的速度慢!
2:LinkedList---------采用链表数据结构,对顺序访问进行了优化,向List中插入和删除的速度较快,随机访问速度较慢。随机访问是指检索于特定位置的元素。LinkedList单独具有addFirst()和addLast()方法,以及removeFisrt()和rmoveLast()方法。这些方法使得LinkedList可以作为堆栈,队列和双向队列使用。
单向链表:单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针。
双向链表:双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
ollection类对于排序的静态方法有以下两个:
--1:sort(List list)对集合中的对象进行自然排序
--2:sort(List list,Comparator com)按照定制顺序排序
ListIterator接口:
List的listIterator()方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,此外还提供了专门操作列表的方法。
Map集合
List 和Set 实现的接口
Map没有
- 关于java的基础---集合
- java基础之谈谈集合类(关于集合类的总结和比较)
- java基础的集合图
- java关于集合的详解
- 关于java集合的概述
- 关于java集合的总结
- 关于Java集合的面试
- 关于Java的基础
- Java基础入门-JAVA的集合类
- java基础,,,,,java集合框架的了解
- 关于java基础--集合部分测试与详解
- [ java ] java基础集合!
- Java基础:对象的集合(上)
- java基础加强--集合类的小结
- Java基础复习:Map集合的输出
- java基础对集合的理解
- Java的集合之基础篇
- java基础——集合的选择
- 三种常用数据标准化方法
- java日期处理专题:java 日期格式化
- java 设计模式--桥接
- Maven笔记
- windows编译opencv3.2
- 关于java的基础---集合
- 详解css中px、em和rem的区别
- 302 NFV
- SpringMVC的各种参数绑定方式
- 方正“四人帮”落马拉开中国金融反腐风暴的大幕
- C语言二维数组与数组指针和指针数组的应用
- 多控制器管理(UINavigationController)
- pycharm开发spark导入pyspark包
- 四平方和