上一篇文章我们说到了 List ,本章开始,我们将继续讲解Set相关的知识.关注公众号「Java面典」了解更多 Java 知识点. Set 是一个无重复对象的集合类.值的重复与否是根据对象的 hashCode 来判断的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法. HashSet HashSet 是无序 的 Set 对象,由 HashMap 实现的,不保证元素的顺序性: HashSet 是非同步的.如果需要使用多线程操作 Has…
第一篇文章中介绍了List集合的一些通用知识.本篇文章将集中介绍List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList. 一.List集合 关于List集合的介绍及方法,可以参考第一篇文章. List集合判断元素相等的标准 List判断两个对象相等只要通过equals()方法比较返回true即可(关于equals()方法的详解可以参考第二篇文章中的内容). 下面以用代码具体展示. 创建一个Book类,并重写equals()…
本篇博客主要讲解Set接口的三个实现类HashSet.LinkedHashSet.TreeSet的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 1. HashSet使用 HashSet是Set接口最常用的实现类,底层数据结构是哈希表,HashSet不保证元素的顺序但保证元素必须唯一. private transient HashMap<E,Object> map; HashSet类的代码声明如下所示: public class HashSet<E&g…
大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很多地方都是在讲原理,内容也比较充足,死记硬背很难,大家一定要去理解性地去记忆. 这一篇,除了把之前的HashMap一些小错误进行修正,我还把相对"比较"简单的List也给请了进来,帮大家降降曲线,找找信心--用谢,留下赞就行. 引言 1.说说有哪些常见集合? 集合相关类和接口都在java.…
 Map Map集合:该集合存储键值对,一对一对的往里存,而且要保证键的唯一性. Map |------HashTable:底层是哈希表数据结构,不可以存入null键null值.该集合是线程同步的.JDK1.0,效率低. |------HashMap:底层是哈希表数据结构,允许使用 null值和 null键,该集合是不同步的.JDK1.2,效率高. |------TreeMap:底层是二叉树数据结构,线程不同步,可以给map集合中的键进行排序. 和Set很像,其实,Set底层就是使用了Map集合…
一.概述 Collection是集合框架的根接口.不同的集合具有不同的特性,比如有的集合可以有重复元素,有的不可以,有的可以排序,有的不可排序,如此等等,而Collection作为集合的根接口,它规范定义了集合的通用方法,一个集合我们可以看作一个在内存中的小型数据库,而数据库的常用操作无外乎"增删改查",Collection中的方法也大体是这些类型操作. 此外Colletion的所有通用实现类都会有一个转换器构造方法,它接收一个Collection类型参数,这样可以以另一个Collec…
import java.util.ArrayList;  import java.util.Collection;import java.util.Iterator;public class Home {    public static void main(String[] args) {        // TODO Auto-generated method stub        Collection<String> c1 = new ArrayList<String>()…
package cn.sasa.demo1; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListDemo { public static void main(String[] args) { //Collection<String> testColl = new ArrayList<String>(); //testColl.add(&qu…
2017-07-29 12:59:14 一.简介 1.Vector继承关系 2.Vector类扩容 Vector类的实现和ArrayList极其相似,都使用数组存储元素,但是扩容策略不一样,ArrayList基本是按照1.5倍的思路扩容,Vector是按照创建Vector对象时设置的capacityIncrement值递增的,如果该值没有设置或者为0,则直接Double,如下: 3.Vector的线程安全性 Vector号称是线程安全的,它的安全性来自于几乎给每个方法都添加了synchroniz…
package com.test.collection; import java.util.Vector; public class MyVector { /** * @param args */ public static void main(String[] args) { /** * vector 实现原理与ArrayList 一样,唯一的区别是,vector中的方法都是通过synchronized进行修饰的 * * 2.ArrayList 查询快,插入.删除慢,线程不安全,效率高 * 3…