首页 > 编程知识 正文

java容器的作用(java常用的容器)

时间:2023-05-04 14:36:45 阅读:64515 作者:4088

Java的容器位于Java中。 可以使用各种方法来保存对象。 最简单的是数组。 但是,数组是固定大小的,程序通常在运行时根据条件创建对象。 由于无法预测要创建的对象的数量和类型,Java推出了容器类来解决此问题。

Java容器的基本概念Java容器类库用于存储对象,具有两个不同的概念:

Collection,独立元素的数组。 这些因素都遵循一个或多个规则。 List、Set和Queue都是Collection的一种,List必须按顺序保存元素,但Set不能有重复元素。 Queue需要根据队列规则确定对象的顺序。 映射,映射是键-值对类型,用户可以使用键搜索对象。 混列表允许您使用另一个对象搜索对象。 Collection和Map在Java容器中定义了两种集合,顶级接口分别是Collection和Map。 但是,这两个接口不能直接使用,分别表示两种不同的容器。

简单来说,Collection表示单个元素对象的数组。 ()有序/无序、可重复/不可重复等,具体基于具体子接口Set、List、Queue等) )。 映射表示“键-值对”对象的集合。 同样可以根据秩序/无序等依据具体实现)

Collection接口Collection是最基本的集合接口。 Java SDK不提供直接从Collection继承的类。 Java SDK提供的类都是从Collection继承的“子接口”。 实现Collection接口的所有类都必须提供两个标准构造函数。 没有参数的构造函数用于创建空的Collection,而Collection参数的构造函数用于创建新的Collection。 这个新的Collection与收到的Collection具有相同的元素。 后者的构造函数允许用户复制Collection。

让我们看看Collection的部分源代码

/* * * @返回集合中包含的元素数*/int size (; /** * @return判断collection是否为空,如果为空则为true,如果不为空则为false */boolean isEmpty (; /** *如果指定元素的类型与此集合不兼容,则抛出类型转换异常*@return以确定collection是否包含等于o的元素。=null,判断set中是否有等于o的元素,是否有返回true的元素,是否有不返回false的元素。 如果o==null,则抛出空指针异常* /布尔内容(对象);/* *包含ol lection所有元素的Iterator */IteratorE iterator (); 所有collection array */object [ ] to array (),包括/** *元素; 返回包含/**collection元素的指定类型的数组*/tt[]toarray(t[]a )。 插入/**元素。 如果当前collection中有与e相等的元素,则返回false,同时保留原始collection。 *否则插入元素并返回true*/booleanadd(e )。 /** * remove是这样的元素(o==null? 返回e==null:o.equals(e ),true*/booleanremove (对象删除) )。 booleancontainsall (收集? c ); 布尔Addall (collection? 扩展电子商务; Booleanretainall(collection? c ); 布尔移动全部(collection? c ); 语音清除(; 布尔表达式(对象); int hashCode (; } Map接口Map也是一个接口,一个Map不能包含重复的密钥。 此外,每个key只能映射唯一的值。 Map接口用于代替Dictionary抽象类。 Map接口提供三个集合视图:1.key集合2.value集合3.key-value集合。 map中元素的顺序取决于迭代器的具体实现,检索集合视图实际上是检索隐藏元素详细信息的迭代器。

同样,map实现类必须具有两个“标准”构造函数。 一个是用于创建空贴图的无参数构造函数,另一个是唯一参数。 参数类型是map的构造函数,用于创建与输入参数具有相同key-value映射的新map。 实际上,后者允许复制任何map。 这只是一个建议,不是强制要求的。 因为

接口是无法包含构造器的,不过这个建议在JDK被遵守。

如果一个方法的操作是不被支持的,这个方法指定抛出UnsupportedOperationException异常。如果这个操作对map是没有影响的,那么也可以不抛出UnsupportedOperationException异常。例如,在一个不能被修改的map调用putAll(Map)方法,如果该map的映射是空的,就不要求抛出UnsupportedOperationException异常。

看一下部分源码:

/***返回map中key-value映射的数量*/int size();/***如果map中没有key-value映射返回true*/boolean isEmpty();/***如果map不含key映射,返回false,当key的类型不符合,抛出ClassCastException,当key是*null且该map不支持key的值是null时,抛出NullPointerException*/boolean containsKey(Object key);/***如果map含有一个以上的key映射的参数value,返回true,异常抛出的情况和containKey一样*/boolean containsValue(Object value);/***根据key得到对应的value,如果没有对应的映射,返回null,如果map允许value为null,返回*null可能是有一对key-null的映射或没有对应的映射*/V get(Object key);/***往map放入一对key-value映射*/V put(K key, V value);/***根据key删除对应映射*/V remove(Object key);/***复制一份与参数一样的map*/void putAll(Map<? extends K, ? extends V> m);/***清空map中所有的映射*/void clear();/***返回map中所有key的集合*/Set<K> keySet();/***返回map中所有value的集合*/Collection<V> values();/***返回key-value的集合*/Set<Map.Entry<K, V>> entrySet();/***比较调用者与参数是否相等*/boolean equals(Object o);/***计算map的hash code*/int hashCode();}

粗略的了解一下,我们在接下来的文章再好好研究

 

参考:

http://blog.csdn.net/u014136713/article/details/52089156

https://www.tianmaying.com/tutorial/java_collection

https://www.jianshu.com/p/047e33fdefd2

https://www.cnblogs.com/13jhzeng/p/5560676.html

https://www.jianshu.com/p/047e33fdefd2

http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

https://blog.csdn.net/qq_37910658/article/details/73835078

https://blog.csdn.net/ns_code/article/details/35564663

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。