第五节:Java中常用数据集合

List

public interface List<E>extends Collection<E>

有序的 collection(也称为序列),允许重复的元素。

常用实现类:

  • ArrayList:

底层使用的是数组结构,特点:查询速度快,增删操作较慢,而且线程不同步.

要保证同步,可以使用:List list = Collections.synchronizedList(new ArrayList());进行包装,默认容量为10.

常用方法:add,addAll,remove,indexOf,subList,contains,isEmpty…

容易忽略的方法:trimToSize()//修正容量大小,用多少,给多少,ensureCapacity(int minCapacity)//预设大小

  • LinkedList

使用双向链表实现存储,允许所有元素(包括 null)。非线程安全,要保证同步,可以使用List list = Collections.synchronizedList(new LinkedList());进行包装,可以被当作堆栈和队列来使用。

  • Vector

也是一个有序集合,允许重复元素,并且线程安全.

Map

  • HashMap

基于哈希表的 Map 接口的实现,存储键值对,键是唯一的,允许使用 null 值和 null 键,非同步(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同),同步可以使用Map m = Collections.synchronizedMap(new HashMap(...));

常用方法:

  1. 添加。 put(key,value):当存储的键相同时,新的值会替换老的值,并将老值返回。如果键没有重复,返回null。 void putAll(Map);
  2. 删除。 void clear():清空 value remove(key) :删除指定键。
  3. 判断。 boolean isEmpty(): boolean containsKey(key):是否包含key boolean containsValue(value) :是否包含value
  4. 取出。 int size():返回长度 value get(key) :通过指定键获取对应的值。如果返回null,可以判断该键不存在。 当然有特殊情况,就是在hashmap集合中,是可以存储null键null值的。

Collection values():获取map集合中的所有的值。

  • HashTable

底层是哈希表数据结构,不可以存入null键null值,是线程同步的.

Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子(默认.75)

Set

  • HashSet

底层数据结构是哈希表(实际上是一个 HashMap 实例),允许使用 null 元素,唯一且无序,非线程安全.通过元素的hashcode和equals来保证元素的唯一性。如果元素的hashcode值相同,才会判断equals是否为true; 如果元素的hashcode的值不同,不会调用equals。

Collections

提供对集合进行操作的一个包装器,实现对集合的查找、排序、替换、 线程安全化(将非同步的集合转换成同步的)等操作。常用方法:

Collections.max(list);//返回list中字典顺序最大的元素。

int index = Collections.binarySearch(list,”zz”);//二分查找,返回角标。必须是有序的

Collections.fill();//可以将list集合中的所有元素替换成指定元素。

Collections.repalceAll(list,”要被替换的”,”替换的值”);//可以将list集合中的指定元素替换成指定元素。 Collections.reverse(); 反转

Collections.reverseOrder(参数是比较器);//逆向反转排序。倒序。。

Collections.shuffle(list);//随机对list中的元素进行位置的置换。

synchronizedXXX(XXX);非同步集合转成同步集合的方法:

Arrays

用于操作数组对象的工具类,里面都是静态方法。

Arrays.asList:可以从 Array 转换成 List。可以作为其他集合类型构造器的参数。

Arrays.binarySearch:在一个已排序的或者其中一段中快速查找。

Arrays.copyOf:如果你想扩大数组容量又不想改变它的内容的时候可以使用这个方法。

Arrays.copyOfRange:可以复制整个数组或其中的一部分。

Arrays.deepEquals、Arrays.deepHashCode:Arrays.equals/hashCode的高级版本,支持子数组的操作。

Arrays.equals:如果你想要比较两个数组是否相等,应该调用这个方法而不是数组对象中的 equals方法(数组对象中没有重写equals()方法,所以这个方法之比较引用而不比较内容)。

Arrays.fill:用一个给定的值填充整个数组或其中的一部分。

Arrays.hashCode:用来根据数组的内容计算其哈希值(数组对象的hashCode()不可用)。

Arrays.sort:对整个数组或者数组的一部分进行排序。也可以使用此方法用给定的比较器对对象数组进行排序。

Arrays.toString:打印数组的内容。

原文地址:https://www.cnblogs.com/mxxblog/p/12405494.html

时间: 2024-10-09 08:31:45

第五节:Java中常用数据集合的相关文章

[转]Java中常用的集合—初学者的你不可错过的精编整理

集合一直都是项目中非常常见的,我是一个Android开发者,集合对于我来说,在项目中使用的次数非常之多,因为使用的多,熟能生巧,所以这里呢!就给那些初学者整理一下Java当中常用的集合吧!   因为此篇文章是给初学者看到,所以对于集合的认识,我们就不从内存的角度去分析了,等你Java学到一定的时候,再去学习一下集合的底层实现,这会让成为一名更加牛的Java程序员.   在整理之前呢,我们先聊一聊为什么集合会这么常用?,集合这个概念,我们初次接触是在高中的数学当中,高中的集合具有以下知识点:  1

Java中常用的集合

  有序列 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据, Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 几个面试常见问题:1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?A:Vector和HashTable是线程同步的(

Java中常用的集合框架

BlockingQueue A线程可以知道b线程的存在 是一个接口并非一个具体实现: ArrayBlockingQueue ArrayBlockingQueue的内部元素都放置在一个对象数组中:final Object[] items; Offer():当队列已经满了,会立即返回false Put():如果队列满了会一直等待 Pool():弹出元素,如果为空返回null Take():弹出元素,如果为空等待到有元素即可. Take方法: public E take() throws Interr

【知了堂学习笔记】java中常用集合的理解

最近学习了java中常用集合类的一些知识,在这里作为一只小白,我来谈谈我的理解,顺带总结知识点. 引入:在没有接触之前,听到集合,给我感觉是想到了数学中的集合一样,里面存放着一个一个的元素.其实不然,这个集合也就差不多,是用来存放元素的容器. Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成. 今天我要谈的主要是,如下图所示: 1.Collection Collection是最基本的集合类型,若要检查Collection中的元素,可以使

java中常用的数据加密算法

以下为加密的工具类: import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; impo

Java中数组和集合容器的剖析

java中常用的存储容器就是数组的集合,每种容器存储的形式和结构又有所不同. 数组,是最基础的容器,在创建数组的时候有三种方式分别如下: int[] arr = new int[5]; int[] arr = new String[]{1,2,3,4,5}; int[] arr = {1,2,3,4,5}; 从上面的三种方式可以看出,在定义数组的时候有个共同的特点就是能够直接看出数组的长度,这也是数组的一大特点,就是定义的时候指定长度,同时数组一旦定义完成后长度就不可以变化,这也是数组在后期开发

开发java中常用的几种数据类型

JAVA中常用的数据结构(java.util. 中) java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类.其主要的关系(继承关系)有:  (----详细参见java api文档!) Collection---->Collections                                                                          

java中常用的包、类、以及包中常用的类、方法、属性-----io包

由于最近有需要,所以下面是我整理的在开发中常用的包.类.以及包中常用的类.方法.属性:有需要的看看 java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.math.*; java.sql.*; java.text.*; java.awt.*; javax.swing.*;   包名 接口 类 方法 属性 java.io.*; java.io.Serializable实现序列化 java.io.Buffe

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71