发布于2021-03-13 13:47 阅读(1182) 评论(0) 点赞(22) 收藏(1)
Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合
1.有序的集合
2.允许存入重复的对象
3.有索引,可以用普通的for循环便利
ArrayList(数组)
这是我们工作中用的最多最平凡的数据结构,位于 java.util 包中, ArrayList实现了List接口它是一个可调整大小的数组可以用来存放各种形式的数据。并提供了包括CRUD在内的多种方法可以对数据进行操作但是它不是线程安全的,具体可以看这位老哥的文为什么说ArrayList是线程不安全的?
LinkedList(链表)
是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
Vector(队列)
因为平时用到的不多,所以没怎么了解过,日后了解了会更新补上。
1.该容器中只能存储不重复的对象(去重)
2.没有索引,不能用普通的for循环便利
HashSet
HashSet类,是存在于java.util包中的类 。同时也被称为集合,基于HashMap实现,,允许且只允许存一个null。HashSet在进行元素添加时,底层先计算出该元素的hashcode值,再根据该值进行hash算法计算得出hash表中存储的位置,此位置可以理解为hash表中的元素的索引值。如果该索引值中无元素存在,则添加。如果有,则取出该位置的元素计算得出hashcode值,如果相等,再进行equals比较,比较两内容是否相等,如果相等,则表示是同一元素,放弃添加。
LinkedHashSet
集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起 来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。
TreeSet
TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。
上述所有类都继承自collection接口,任意的单列集合都可以使用Collection接口中的方法
public interface Collection<E> {
// 集合大小
int size();
// 判断是否为空集合
boolean isEmpty();
// 判断是否包含某元素
boolean contains(Object var1);
// 添加
boolean add(E var1);
// 移除
boolean remove(Object var1);
// 判断是否包含某些元素
boolean containsAll(Collection<?> var1);
// 多元素添加
boolean addAll(Collection<? extends E> var1);
// 多元素移除
boolean removeAll(Collection<?> var1);
// 保留全部
boolean retainAll(Collection<?> var1);
// 清空
void clear();
// 比较
boolean equals(Object var1);
// 返回元素的哈希值
int hashCode();
// 把集合中的元素存到数组里
Object[] toArray();
}
原文链接:https://blog.csdn.net/Neo_Qiang/article/details/114671034
作者:Djfj
链接:http://www.javaheidong.com/blog/article/114335/236b7e8a4819509b566e/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!