数据结构

xiaoxiao2025-06-01  43

Java 数据结构

https://www.cnblogs.com/ysocean/p/7889153.html数据结构与算法

数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构;

集合结构:除了同属于一种类型外,别无其它关系 线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入,删除操作. 树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等) 图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意  

 

1、几个常用类的区别: 1.ArrayList: 元素单个,效率高,多用于查询  2.Vector: 元素单个,线程安全,多用于查询  3.LinkedList:元素单个,多用于插入和删除  4.HashMap: 元素成对,元素可为空  5.HashTable: 元素成对,线程安全,元素不可为空

二、Vector、ArrayList和LinkedList 大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入、删除时LinkedList会有比较好的表现,但是它们三个性能都比不上数组,另外Vector是线程同步的。所以:  如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替List;  如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList;  如果在多线程条件下使用,可以考虑Vector;  如果需要频繁地删除插入,LinkedList就有了用武之地;  如果你什么都不知道,用ArrayList没错。  

 

 

1.:List(列表)、Set(保证集合中元素唯一)、Map(维护多个key-value键值对,保证key唯一)

HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。

HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。 由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。 HashMap不能保证随着时间的推移Map中的元素次序是不变的。  

https://blog.csdn.net/qq_29631809/article/details/72599708?utm_source=blogxgwz0

转载请注明原文地址: https://www.6miu.com/read-5031077.html

最新回复(0)