set容器

java(集合框架)(转)

僤鯓⒐⒋嵵緔 提交于 2019-12-02 18:17:28
前言 集合①只能存放对象,存放基本类型会自动转成对应的对象②可以存放不同类型的对象(如果不使用泛型的话),且不限数量③集合中存放的只是对象的引用 集合详解 集合-1.png 集合-2.png Iterable接口(java.lang包) Collection继承了该接口,所以Collection的实现类都可以使用 Iterator() 方法来获得迭代器,从而遍历集合 public interface Iterable<E> { Iterator<E> iterator();//return a Iterator Object } Iterator接口(迭代器,java.util包) 迭代器可以使用for-each代替。迭代器相当于一个在两个元素之间的指针(首尾元素除外),使用 remove() 删除元素之前,需要先调用 next() 越过该元素。如果调用 next() 之后,集合发生了改变,再接着调用 remove() 则会抛出异常。 public interface Iterator<E>{ E next();//返回迭代器刚越过的元素的引用 boolean hasNext();//判断容器内是否还有可供访问的元素 void remove();//删除迭代器刚越过的元素,所以要删除则必须先越过 } ListIterator接口

java基础-容器

巧了我就是萌 提交于 2019-12-02 18:00:26
容器是指对对象的容纳,java中主要有这几个容器:list(列表)、set(集合)、map(映射)。所有容器都无法保存基本数据类型,需要先把基本数据类型变为封装类,用容器保存封装结果。 一.List(列表) 1.ArrayList,线性表,容量大小可变的数组  <===>tArrayLisk() 2.LinkedList,链表,没有使用顺序存储机制,无法根据索引快速存取  <===>tLinkedList() 3.迭代器遍历LIst  <===>demo2() 1 public static void tArrayList(){ 2 /* 3 ArrayList的构造方法: 4 ArrayList a1=new ArrayList(); //构造一个空的线性表 5 ArrayList a1=new ArrayList(b); //根据已有类集构造线性表 6 ArrayList a1=new ArrayList(20); //构造指定初始容量的线性表 7 */ 8 ArrayList a1=new ArrayList(); 9 a1.add("a"); 10 a1.add("z"); 11 a1.add("x"); //add(value),插入元素 12 a1.remove(0); //remove(index),根据数组索引删除元素 13 a1.set(0,"z1"); /

Java中的Set、List、Map的区别

a 夏天 提交于 2019-12-02 17:09:15
数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。 JAVA集合主要分为三种类型: Set(集) List(列表) Map(映射) Collection 接口 :Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。 Set 和List 都继承了Conllection,Map Collection接口的方法: boolean add(Object o) :向集合中加入一个对象的引用 void clear():删除集合中所有的对象,即不再持有这些对象的引用 boolean isEmpty() :判断集合是否为空 boolean contains(Object o) : 判断集合中是否持有特定对象的引用 Iterartor iterator() :返回一个Iterator对象,可以用来遍历集合中的元素 boolean remove(Object o) :从集合中删除一个对象的引用 int size() :返回集合中元素的数目 Object[] toArray() : 返回一个数组,该数组中包括集合中的所有元素 关于:Iterator()

C++ list, vector, map, set 区别与用法比较

[亡魂溺海] 提交于 2019-12-02 17:08:49
list封装了链表,vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历 整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而 List可以任意加入。 Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可。 Set和Vector的区别在于Set不包含重复的数据。Set和Map的区别在于Set只含有Key,而Map有一个Key和Key所对应的Value这两个元素。 Map和Hash_Map的区别是Hash_Map使用了Hash算法来加快查找过程,但是需要更多的内存来存放这些Hash桶元素,因此可以算得上是采用空间来换取时间策略。 1. vector 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小

(一)关于集合

让人想犯罪 __ 提交于 2019-12-02 10:03:17
前言    最近在看集合相关的东西,看完总是不知所云,至此仍是云里雾里。看来有必要了解集合的底层实现,方能解心中之惑。遂建立一个集合专题,记录所思所学。 什么是集合   Java有多种方式保存对象(或者说对象的引用),例如数组。如果想保存一组对象,可以用数组;如果想保存一组基本类型的数据,更应该用数组。数组虽好,可也不是万能的。因为数组在初始化时要指定一个固定长度,这就很不好了。为什么呢?因为有些时候,你不知道有多少个对象,如果数组长度定得太小,则会报错。定得太大则造成浪费(虽然大部分人都没有对象)。因此数组尺寸固定这一限制显得在存储对象时过于受限了。   因此java类库提供了一套相当完整的 容器 来解决这个问题。其中基本的类型是 List 、Set 、Queue 、Map, 这些类型一般被称为 集合类。 通常使用范围更广的术语“容器”称呼他们。   java容器类能够自动调整自己的尺寸(自动扩容机制)。与数组不同的是,可以放任意数量的对象到容器里而不用担心容器要设置多大。 基本概念   在 Java 类库中,集合类的有两个基本接口: Collection 接口 、 Map接口。 其中Collection 接口又有3个子接口 List 接口 、Set 接口 、Queue 接口。   为什么要这么分?     Collection接口主要储存的是一个独立元素的序列

10个Python set 常用操作函数!

拥有回忆 提交于 2019-12-02 06:22:41
今天为大家带来的内容是10个Python set 常用操作函数!(附带详细解答)文章内容具有不错的参考意义,希望在此能够对各位有所帮助。 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。 set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性: 不重复 元素为不可变对象 python提供了常用的数据结构,其中之一就是set,python中的set是不支持索引的、值不能重复、无需插入的容器。 简单记录下set常用的操作函数: 1.新建一个set: set("Hello"),这样会转成单个字符的值进行插入,结果是'H','e','l','o','l'因为重复只能插入一次。 2.增加一个元素: add()用于增加一个元素值,update([]),用于增加多个元素值,参数为list,注意如果用add增加多个值,会报参数类型错误 3.删除一个元素: remove()用于删除一个set中的元素,这个值在set中必须存在,如果不存在的话

JavaSE 集合类(Collection接口,List接口,Map接口)

孤街醉人 提交于 2019-12-01 21:11:46
集合类就好比一个容器,比如说数组就是一个可以存放数据的容器,但是数组的长度是不可变的,集合类的长度却是可变的。常用的集合有Map集合,Set集合,List集合。 List与set继承collection接口 Collection接口 Collection接口通常不能直接使用,但该接口提供了添加元素,删除元素,管理数据的方法。List接口和Set接口都继承了Collection接口,所以他们能实现Collection的方法。I 构成Collection的单位称为元素。 Collection常用方法如下 方法 功能 add(E e) 将指定的对象加到该集合中 remove(Object o) 将指定对象从该集合中移除 isEmpty() 返回boolean值,用于判断当前集合是否为空 iterator() 返回在此Collection的元素上的迭代器。用于遍历集合 size() 返回Int值,获取该集合中元素的个数 利用iterator 遍历集合 import java . util . ArrayList ; import java . util . Collection ; import java . util . Iterator ; public class Test { public static void main ( String [ ] args ) {

【JavaSe】容器篇(四) Set集合

被刻印的时光 ゝ 提交于 2019-12-01 21:11:04
JavaSe·容器篇(四) Set集合 1. Set接口 java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了。与 List 接口不同的是, Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。 Set集合取出元素的方式可以采用:迭代器、增强for 2. HashSet集合 2.1 HashSet介绍 java.util.HashSet 是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。 java.util.HashSet 底层的实现其实是一个 java.util.HashMap 支持 HashSet 是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性的方式依赖于: hashCode 与 equals 方法。 public static void main ( String [ ] args ) { //创建 Set集合 HashSet < String > set = new HashSet < String > ( ) ; //添加元素 set . add (

Set and bitset

混江龙づ霸主 提交于 2019-12-01 19:17:37
关于 set ,必须说明的是 set 关联式容器。 set 作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在 set 中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是 set 中数元素的值不能直接被改变。 C++ STL 中标准关联容器 set, multiset, map, multimap 内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为 RB 树 (Red-Black Tree) 。 RB 树的统计性能要好于一般平衡二叉树,所以被 STL 选择作为了关联容器的内部结构。 注意: 1 、 set 中的元素都是排好序的 2 、 set 集合中没有重复的元素 来自 <https: //blog.csdn.net/byn12345/article/details/79523516> bitset C++ 的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1 bit 空间。 bitset<4> bitset1;    // 无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12);    // 长度为8,二进制保存,前面用0补充 string s = "100101" ; bitset<10> bitset3(s);    // 长度为

Map与Set

穿精又带淫゛_ 提交于 2019-12-01 17:35:31
Map 对象 Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值:字符串、对象、函数、NaN var myMap = new Map(); var keyString = "a string"; myMap.set(keyString, "和键'a string'关联的值"); myMap.get(keyString); // "和键'a string'关联的值" myMap.get("a string"); // "和键'a string'关联的值" 因为 keyString === 'a string'MyMap.size;//1 遍历Map方式: for...of var myMap = new Map(); myMap.set(0, "zero"); myMap.set(1, "one"); // 遍历map for (var [key, value] of myMap) { console.log(key + " = " + value); }myMap.entries();//返回Iterator 对象,包含了 Map 对象中每个元素的 [key, value] 数组。//Iterator对象:是一个引用型变量