`
rq2_79
  • 浏览: 240465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA集合小结

    博客分类:
  • java
 
阅读更多

AVA集合小结


下面是我自己画的,关系画得没上面好,但我自己看着清楚些



还有一张下载来的:


 


有序否

允许元素重复否

Collection

List

Set

AbstractSet

HashSet

TreeSet

是(用二叉树排序)

Map

AbstractMap

使用 key-value 来映射和存储数据, Key 必须惟一, value 可以重复

HashMap

TreeMap

是(用二叉树排序)



几个面试常见问题:
1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
   A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

2.Q:大致讲解java集合的体系结构
   A:List、Set、Map是这个集合体系中最主要的三个接口。
      其中List和Set继承自Collection接口。
      Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
      List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
      Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
      SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。

3.Q:Comparable和Comparator区别
    A:调用java.util.Collections.sort(List list)方法来进行排序的时候,List内的Object都必须实现了Comparable接口。
        java.util.Collections.sort(List list,Comparator c),可以临时声明一个Comparator 来实现排序。
        Collections.sort(imageList, new Comparator() {
            public int compare(Object a, Object b) {
                int orderA = Integer.parseInt( ( (Image) a).getSequence());
                int orderB = Integer.parseInt( ( (Image) b).getSequence());
                return orderA - orderB;
           }
        });
        如果需要改变排列顺序
        改成return orderb - orderA 即可。

4.Q:简述equals()和hashCode()
    A:...不知道。下回分解

public interface
Collection
            extends Iterable


public interface
List
            extends Collection


public abstract class
AbstractList
            extends AbstractCollection
            implements List


public class
Vector
            extends AbstractList
            implements List,
                                   RandomAccess,
                                   java.lang.Cloneable,
                                   java.io.Serializable
基于Array
是“sychronized


public class
ArrayList
       
extends AbstractList
       
implements List,
                          RandomAccess,
                          Cloneable,
                          java.io.Serializable
基于Array
ArrayList 非同步 的。所以在性能 上要比 Vector 优越一些


public class
LinkedList
        extends AbstractSequentialList
        implements List ,
                          Queue ,
                          Cloneable
,
                          java.io.Serializable
不基于Array

基于 Array List Vector ArrayList )适合查询,而 LinkedList (链表)适合添加,删除操作




List 基本上都是以 Array 为基础。但是 Set 则是在 HashMap 的基础上来实现的,这个就是 Set List 的根本区别
public abstract class AbstractSet
    extends AbstractCollection
    implements Set



public class HashSet
    extends AbstractSet
    implements Set , Cloneable , java.io.Serializable
HashSet 的存储方式是把 HashMap 中的 Key 作为 Set 的对应存储项


public class LinkedHashSet
    extends HashSet
    implements Set , Cloneable , java.io.Serializable


public class TreeSet
    extends AbstractSet
    implements SortedSet , Cloneable , java.io.Serializable
它是通过 SortedMap 来实现的




public interface Map <K,V>


public abstract class AbstractMap <K,V>
    implements Map <K,V>


public class HashMap <K,V>
    extends AbstractMap <K,V>
    implements Map <K,V>, Cloneable , Serializable


public class TreeMap <K,V>
    extends AbstractMap <K,V>
    implements SortedMap <K,V>, Cloneable , java.io.Serializable

HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)



更详细的可以看:
http://www.frontfree.net/view/article_695.html
http://blog.csdn.net/happyzhm5/archive/2007/03/17/1532101.aspx
http://blog.csdn.net/Java_apprentice/archive/2007/07/20/1700351.aspx

分享到:
评论

相关推荐

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    Java 集合概览(小结)

    Java 集合概览小结 Java 集合概览是 Java 语言中的一种重要组件,提供了多种类和接口来帮助我们存储和管理对象集合。Java Collection API 中的集合类主要位于 java.util 包中,同时也有一些与并发相关的集合类位于 ...

    集合小结 Collection

    ### 集合小结 Collection #### Java集合概述 Java中的集合是一组对象的组合,类似于C++标准模板库中的容器。但是与C++不同的是,Java集合不仅可以存储单一类型的数据,还可以存储不同类型的对象。这使得Java集合...

    java基础小结

    《Java基础小结》 Java,作为一种广泛应用的编程语言,以其跨平台、面向对象的特点深受开发者喜爱。这篇博文和随附的PDF笔记旨在总结Java的基础知识,帮助初学者巩固理解,同时也为有经验的开发者提供回顾参考。 1...

    java课程小结.rar_北京理工大学JAVA课程

    这个“java课程小结.rar_北京理工大学JAVA课程”压缩包中包含的“课程小结”文件,很可能是教授精心编写的教学精华,旨在帮助学生巩固所学知识并为后续学习打下坚实基础。 在Java课程中,有几个核心概念和技术是必...

    Java基础知识小结

    ### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...

    java多态小结

    例如,在使用集合框架时,我们可以声明一个`List`类型的变量,然后将其赋值为`ArrayList`、`LinkedList`等不同实现的具体实例,而无需关心具体是哪一种实现,因为所有实现都遵循相同的接口规范。 此外,多态也是...

    Java多线程小结

    ### Java多线程小结 #### 一、多线程的概念与意义 多线程是Java编程中的一个重要概念,指的是程序在运行时可以同时执行多个线程的能力。它能够提高程序的性能,尤其是在多核处理器的环境下。多线程使得程序能够更...

    Java程序设计 3 数组与集合 简图.ppt

    小结 本节课我们学习了Java程序设计中的数组和集合,了解了数组和集合的区别和联系,并学习了List、Set、Map接口的特点和应用场景。同时我们还学习了如何实现集合的基本方法。 思考考 1. 什么是数组?数组的特点...

    java基础知识从业必备知识点结构图小结.rar

    为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...

    Tedu一阶段JavaSet集合和List集合

    - **Collection接口**:这是Java集合框架的基础接口,所有的集合类都需要直接或间接地实现此接口。它提供了基本的操作方法,如添加(add)、移除(remove)、判断是否包含某些元素(contains)等。 #### 二、List接口与...

    关于static的小结(Java内存溢出)

    ### 关于static的小结(Java内存溢出) #### 标题和描述中的知识点 在《关于static的小结(Java内存溢出)》这篇文章中,作者主要探讨了与Java中的`static`关键字相关的知识点,以及如何可能导致内存溢出的情况。...

    Java使用Iterator迭代器遍历集合数据的方法小结

    Java使用Iterator迭代器遍历集合数据的方法小结 Java语言中,使用Iterator迭代器遍历集合数据是一种常见的操作。本文主要介绍了Java使用Iterator迭代器遍历集合数据的方法,并结合实例形式分析了Java迭代器进行集合...

    java面试笔试题集合

    **小结**: - `int` 适用于数值计算和频繁的操作。 - `Integer` 更适合用于集合处理和可能为空的场景。 #### 四、String与StringBuffer的区别 **String**:表示不可变的字符序列,一旦创建后无法修改。 **...

    java开发经验小结

    如果一个方法或类过于庞大,应考虑拆分为多个小方法或类,以增加复用性和可维护性。 3. **避免在生产环境中使用System.out.println()**:在调试期间,可以使用System.out.println(),但在部署时,应替换为日志框架...

    java笔试题小结

    ### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...

    java.util.vector中vector小结

    在Java编程语言中,`java.util....总之,`Vector`是Java集合框架的一部分,提供了一种线程安全的方式来管理动态数组。理解其特性和用法对于编写多线程Java程序至关重要,但同时也要权衡其性能和线程安全之间的平衡。

    大话Java性能优化

    前言 第1章 性能调优策略概述 1.1 为什么需要调优 1.2 性能优化的参考因素 1.3 性能调优分类方法 1.4 本章小结 ...第3章 Java API调用优化建议 ...3.2 集合类概念 ...3.6 本章小结 ...4.6 本章小结 ...8.4 本章小结

Global site tag (gtag.js) - Google Analytics