Java集合的理解

1.java集合框架到底是什么?

Java集合框架,就是对数据结构书中的常见的数据数据结构,进行封装。

2.集合框架的架构是什么?

都是通过一些接口和一些实现接口的类来构造数据结构中常见的数据结构。

自然就拥有了增加,删除,查询,遍历,求其长度,将其置为空的方法。Java中就是add(),remove,get/contain(),iterable(),size(),clear();

集合框架中主要有2大接口,一个接口是Collection,另外一个接口是Map接口。

Collection接口继承了Iterable接口,就自然继承了Iterator方法,该方法主要用来遍历数据。

Collection接口,有3个子接口,List,Set,Queue.

List接口通常就是我们数据结构中认为的线性表。

数据结构中的线性结构有数组,链表,队列,栈,串。

Arraylist:就是数组。

LinkList:就是链表

Vector:就是动态数组,Stack:就是堆栈。

ArrayList和Vector区别:

Vector是线程同步的,ArrayList不是同步的。安全性Vector更高。

如果是在单线程中,使用ArrayList效率更高,vector差一点。

LinkList和ArrayList区别就是数组和链表的区别?两个都可以实现插入,删除和查询,一个查询更高,一个插入,删除更高。

Set:是非常简单的集合,不允许元素重复,对集合中的元素也没有特定的顺序。

HashSet:使用哈希算法存取集合中的元素,存取速度比较快。

Set有一个子接口是SortedSet。该接口提供了排序的功能。实现该SortedSet的类有TreeSet。

Map接口:是一个存储关键字和值的关联或者说是关键字/值对的集合。给定一个关键字,可以得到其相应的值。

HashMap:基于hash表的map,但是该类不保证顺序。

TreeMap:是SortedMap接口的基于红黑树的实现(红黑树是一种特定类型的二叉树,是一种自平衡的二叉树)按照升序排序排列关键字。

另外java.util包中还提供了两个类,供我们使用,丰富我们的使用。

Arrays类:传统静态数组。

Collections类:提供了各种集合的搜索,排序和线程完全化等操作。

Comparable接口,该接口是用来排序的。实现该接口,就可以调用Arrays.sort(引用对象)或者Collections.sort()进行自动排序。

3.hashCode()和equals()?
hahCode()和equal一般都是配合使用,主要解决的是在是将自己所创建的对象放入到set集合中,因为set集合是不允许重复的,而遇到重复的对象(地址和内容都相等,hashcode和equal都相等)。在Java中凡是给我提供好的API都是实现了object中的tostring()方法和hashcode()方法和equal方法,至于自己写的类必须自己实现。那么这个set集合对象它到底是如何实现,这个实现方法和哈希表中链地址法很像,不同的关键字,也有可能有着相同的地址,然后解决冲突,这是哈希表的原理。如果hashcode码相等,在比较equal方法,如果equal方法也相等,则视为重复,如果不相等,则视为不重复,如果hashcode不相等,那equal方法比都不会比较的。
详情请参考 http://blog.csdn.net/afgasdg/article/details/6889383
4.Comparable接口是干什么用的?
这个接口中有个很重要的方法就是compareTo()方法,凡是实现了该接口的方法,都是相等则为0,大于则为证书,小于则为负数。自己写的类如果想有比较方法,需自己手动去实现。这种方法都是用作对象和对象之间进行比较的。

时间: 2024-10-18 12:10:16

Java集合的理解的相关文章

Java 集合深入理解(16):HashMap 为什么这么快

>点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 前面我们介绍了 哈希相关概念:哈希 哈希函数 冲突解决 哈希表,这篇文章我们来根据 JDK 1.8 源码,深入了解下使用频率很高的 HashMap . 读完本文你将了解到: 点击查看 Java 集合框架深入理解 系列 - - 乾杯 什么是 HashMap HashMap 的特点 HashMap 的 13 个成员变量 HashMap 的初始容量和加载因子 HashMap 的关键方法 HashMap 的 4 个构造方法

Java 集合的理解(持续更新......)

一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 二.集合是什么? Java集合类存放于 java.util 包中,是一个用来存放对象的容器. 注意:①.集合只能存放对象.比如你

java集合-Map

面试当中经常有被问道对java集合的理解,一直都是停留在java面试答案的水平,这次终于想好好研究一下了. Java的集合一般相对于数组去比较,数组是大小固定的并且同一个数组只能存放类型一样的数据.数组的定义就是相同类型.固定长度的一组数据,一旦被初始化,长度不可更改.所以如果长度不确定,一种方法是初始化的时候长度申请足够大,但这样容易造成内存的浪费:另一种就是用集合.Java集合主要分为三种类型: Set(集)->接口Collection List(列表)->接口Collection Map

Java 集合系列之二:List基本操作

1. Java List 1. Java List重要观点 Java List接口是Java Collections Framework的成员. List允许您添加重复元素. List允许您拥有'null'元素. List接口在Java 8中有许多默认方法,例如replaceAll,sort和spliterator. 列表索引从0开始,就像数组一样. List支持泛型(类型的参数化),我们应尽可能使用它.将Generics与List一起使用将在运行时避免ClassCastException. 2

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

我所理解Java集合框架的部分的使用(Collection和Map)

所谓集合,就是和数组类似--一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接口,长虚线表示抽象类,实线表示类,箭头表示实现接口或者继承)(在网络上找的图,不知道原作者,侵权请联系我删除)(总之,关系很复杂,所以不用记得这个图,只是用来吓吓人而已的). 下面贴上个人理解之精简版之Collection(集)和Map(地图?暂且这么理解吧),话说思维导图蛮好用,以下是两幅思维导图

Java集合(2)——深入理解ArrayList、Vector和LinkedList

回顾 Java集合主要分为两个体系结构,Collection和Map.这篇博客主要介绍Collection子接口List下的三个经常使用的实现类:ArrayList.Vector和LinkedList. 详细内容参见<Java基础--集合> 先看下关系图: 1.ArrayList 这是List最常用的实现类,想一想为什么他最常用? Array,在java中意为"数组".猜想ArrayList和数组应该关系很密切,其实ArrayList可以看作是一个可以改变大小的数组. 举个

【由浅入深理解java集合】(五)——集合 Map

前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap.关于Map的一些通用介绍,可以参考第一篇文章.由于Map与List.Set集合的某些特性有重合,因此观看本篇文章的会参考到之前的一些内容,最下方有链接.如果已经有这方面的基础,那么对Map的学习将会事半功倍. HashMap HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. 既然要介绍HashMap,那么就顺带介绍HashTable

Java集合详解5:深入理解LinkedHashMap和LRU缓存

Java集合详解5:深入理解LinkedHashMap和LRU缓存 今天我们来深入探索一下LinkedHashMap的底层原理,并且使用linkedhashmap来实现LRU缓存. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.github.io/2018/05/11/collection5 更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net