`
abeetle
  • 浏览: 102068 次
  • 来自: ...
社区版块
存档分类
最新评论

Java 集合和数组的一些小日记

阅读更多

Java集合与数组

1.Java2提供了一 个完整的集合框架,而Java的早期版本只提供了一些集合类,如Hashtable和Vector,以及内建的数组功能。


2.组成集合框架的类和接口是java.util包的成员,Arrays类提供了用于操作数组的static方法,Aarrys类的方法包括用于查找的binarySearch方法,用于比较数组的equals方法,用于给数组赋值的fill方法,以及排序的sort方法和asList方法。另外对Arrays类中的对象进行排序,对象必须实现Comparable接口的compareTo方法

4.Collection接口是集合层次结构中的根接口,Set接口和List接口都是从Collection接口中派生出来的,Collection接口包含了在集合中添加,清除,比较和保持对象的大规模操作。Collection接口提供了iterator方法得到Iterator。

5.Collections类提供了许多操作集合的static方法,其中许多方法实现用于查找和排序等。

6.List是一个能包含重复元素的已排序的Collection,有时候List也称为序列,List接口由ArrayList类,LinkedList类和Vector实现的,ArrayList是List可变数组的实现,类似Vector类的行为和功能,LinkedList则是List的链表实现。

7.iterator的hasNext方法collection是否还含有另外一个元素,如果还有,则hasNext方法返回true,next方法返回Collection中的下一个对象并移动到下一个元素。
 
8.subList得到List的一部分,这一部分被称为子表,对子表的修改都会影响到List,clear方法从List中删除元素,
 
9.toArray方法以数组的形式返回集合中的内容。
 
10.Comparator对象提供一种排序方式,可以按不同Colletion自然顺序的顺序对Collection的元素排序,reverseOrder方法返回一个Comparator对象,它代表了集合的逆转排序。也可以实现你自己的排序方法,前提是实现Comparator接口,并实现Comparator接口的compare方法
 
11.Shuffle算法对list中的元素进行随机排序,binarySearch算法在List中查找一个Object
 
12.Set是不包含重复元素的Collection,集合框架含有Set的两种实现方式:HashSet和TreeSet,HashSet把他的元素存储在哈希表中,而TreeSet则把他的元素存储在树中。
 
13.SortedSet接口扩展了Set并按排好的顺序维护了它的元素,TreeSet类实现了它。

14.headSet方法得到TreeSet中小于一个指定元素的子集,对这一子集的修改都会反映在TreeSet中,tailSet方法得到大于或等于指定元素的子集,同样对它的修改都会反映在TreeSet中。
 
15.Map把键映射到值并不包含重复的键,Map和Set的不同之处在于Map包含键和值,而Set只包含键,HashMap和TreeMap类实现了Map接口,HashMap把他的元素存储在哈希表中,而TreeMap则把他的元素存储在树中。
 
16.SortedMap接口扩展了Map并按排好的顺序维护了它的元素,TreeMap类实现了它。
 
17.内建的集合都是异步的,多线程对Collection的并发访问可能导致不确定的结果,为了防止这个问题,可以在被多线程访问的类外面使用同步包装类,Collections类提供了一系列的static方法把集合转化成不可以修改的形式,当试图修改时,抛出异常。
Public static方法头文件:(同步)
Collection synchronizedCollection(Collection c);
List  synchronizedList(List c)
其他类似。。
 
Public static方法头文件:(不可以修改)
Collection unmodifiableCollection(Collection c);
List  unmodifiableList(List c)
其他类似。。

集合框架提供了不同的抽象实现,程序员可以利用此来实现自己定义的实现!


18.数组和容器的区别主要有以下三点:效率,类型识别以及可以持有primitives

19.容器类保持的类型都是Object的,主要有三种 list ,set, map,容器的缺点主要是保存元素的时候,丢失元素的类型,使用元素的时候,必须进行类型转换

20 list的选择:
   ArrayList随机访问的效率要比LinkList快,但是LinkList顺序访问的效率则高过ArrayList,另外LinkList在对元素进行插入和删除操作时要比ArrayList的效率高,二者的最佳选择方法是:首先选用ArrayList当发现“向元素中插入和删除操作太多时”引发性能问题时,换用LinkList,当然处理固定元素还是选用数组

21.set的选择:
   HashSet的各项性能都要比TreeSet强,但是TreeSet的意义在于能顺序保存元素,因此只有在需要有顺序set时才用TreeSet;
   LinkedHashSet的插入操作要比HashSet慢,主要是因为前者承担了链表和hash容器的双重代价,由于链表的缘故LinkedHashSet的遍历则要比 HashSet快

22.Map的选择:
   HashMap的效率和HashTable差不多,一般来说HASHMAP要稍快,HASHMAP是用来取代HASHTABLE的,TREEMAP的效率要比HAHSMAP低,但是TREEMAP由于是树结构,所以是有序的,因此不需要进行排序操作,如果不需要恒定有序的MAP时,一般来说首选HASHMAP,LINKEDHASHMAP比HASHMAP要慢,因为除了保存HASH容器外还有保存链表,IDENTITYHASHMAP没有办法和上叙MAP比较,它用的是==来比较两个对象的相等性,而不是equals()


23.所有hash类容器持有的对象必须覆盖hashcode和equals方法

 

分享到:
评论

相关推荐

    java 集合和数组的详细总结(并随着讲解带9个例子)

    Java集合和数组是Java编程语言中的基础数据结构,它们用于存储和管理数据。数组是一种简单的数据结构,可以存储同类型的元素序列,而集合是Java集合框架的核心部分,提供了更高级的数据管理和操作功能。 ### 数组 ...

    java 集合

    Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一组统一的接口和类。集合的概念是面向对象编程中用来组织数据的重要工具,它允许我们存储一组对象,根据需要进行添加、删除、修改...

    java集合框架全面进阶

    6. **工具类**:Collections和Arrays类提供了很多实用的静态方法,如排序、复制、填充集合和数组,以及集合与数组之间的转换。此外,Stream API的引入为集合操作提供了更简洁的函数式编程方式。 7. **并发处理**:...

    java集合类线程安全.doc

    Java 集合框架是由 Java 平台标准版 1.2 引入的通用数据结构与算法框架。其灵活的面对对象设计受到了广大 Java 程序员的一致青睐,为 Java 平台的成熟奠定了坚实的基础。 线程安全不是一个全有或全无的问题,难以对...

    java集合使用大全

    * 相同点:类集和数组中存放的元素都是实例对象 * 不同点:类集的长度可以随意扩展,而数组的长度是固定的 类集的使用注意: * 在程序中,如果只声明类集对象,而没有实例化该类集对象,则无法使用该类集对象 * 类...

    java集合,java集合

    在Java中,集合主要分为两大类:List和Set,而Map则不直接属于集合,但与集合框架紧密相关。 1. **List接口**:List是一种有序的集合,允许元素重复,并且可以按照索引访问。ArrayList和LinkedList是List接口的主要...

    java 对象集合小例子.

    例如,创建一个整数数组: ```java int[] numbers = new int[]{1, 2, 3, 4, 5}; ``` 最后,我们谈论的是`集合`(Collections)框架。集合框架是Java API中的一部分,它提供了多种数据结构,如Set、List、Queue等,...

    JAVA集合详解

    ### JAVA集合详解 #### 一、集合框架概述 ##### 1. 什么是JAVA集合框架? JAVA集合框架(Java Collection Framework)是一种为表示和操作集合所规定的标准体系结构,旨在为开发人员提供一种灵活且高效的机制来...

    2023年Java集合知识测试B.doc

    本资源摘要信息涵盖了Java集合知识的多个方面,包括集合和数组的区别、Collection接口的方法、ArrayList和LinkedList的特点、队列的特点、泛型的使用等。 1. 集合和数组的区别 集合和数组是Java中两种常用的数据...

    用JAVA解线性方程组

    "用 Java 解线性方程组" 本文档旨在利用 Java 编程语言解决线性方程组的问题,并提供了详细的示例代码和步骤来实现矩阵操作。 知识点 1:增广系数矩阵 增广系数矩阵是线性方程组的矩阵表示形式,用于表示方程组的...

    Tedu一段Java集合Collection

    根据给定的信息,本文将详细解析“Tedu一段Java集合Collection”的知识点,涵盖集合的基本概念、集合框架中的关键接口、`Collection`接口的核心方法、集合的遍历方式、泛型的应用以及集合与数组之间的相互转换。...

    Java集合类总结

    ### Java集合类总结 #### 一、概述 Java集合类框架是Java标准库的一个重要组成部分,主要用于存储和处理数据集合。这些集合类被定义在`java.util`包中,为开发者提供了灵活的数据结构来实现各种应用程序的需求。...

    Java集合总结.txt

    集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合可变存放多种数据类型 3.数组可以存放基本数据类型,集合只能存放对象 ps:要想往集合中...

    Java集合容器面试题

    集合和数组的区别是:集合可以存储多个元素,可以重复元素,可以插入、删除、遍历等操作,而数组固定长度,不能插入、删除元素。 使用集合框架的好处 使用集合框架的好处是:可以存储多个元素,可以重复元素,可以...

    java List和数组相互转换方法-list集合转数组.md

    list转数组

    java基本数据类型和数组

    java基本数据类型和数组,java编制0-255之间的UNICODE编码表

    Java集合面试题 52道.pdf

    集合和数组的区别 数组和集合的主要区别在于:数组是固定长度的,集合是可变长度的;数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型;数组存储的元素必须是同一个数据类型,集合存储...

    java字符串和数组基础共21页.pdf.zip

    Java字符串和数组是Java编程语言中的基本概念,对于任何Java开发者来说,理解和掌握它们都是至关重要的。在这21页的PDF教程中,我们很可能会深入探讨这两个核心主题。 首先,让我们来谈谈Java中的字符串。在Java中...

    JAVA经典试题集合

    当一个较小的数据类型(如byte、short或char)与一个较大的数据类型(如int、long、float或double)进行运算时,较小的数据类型会被自动提升到较大的数据类型。在给定的题目中,byte类型的x除以double类型的y会产生...

Global site tag (gtag.js) - Google Analytics