您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Java集合框架的数据结构是什么

2025/11/3 8:48:26发布47次查看
1、什么是集合框架?在java中,有一套现成的数据结构,例如顺序表,链表,队列,栈,优先级队列,哈希表等,被封装成了相应的接口/类,供程序员直接使用,只需要创建相关的对象即可以使用,而不需要再实现其内部结构。
集合是一种存储和管理多个元素的数据结构,其中这些元素被置于单个单元中,可通过增加、删除、修改和查询等操作进行处理。举例来说,像一幅扑克牌(一组牌的集合)、一个通讯录(一组姓名和电话的映射关系)等都可以作为例子。
下图很重要!!!需要牢记其常用的接口和类!!
因为map接口没有实现iterable接口,那么要遍历其中的元素该怎么实现呢?
map<integer,string> map = new hashmap(); map.put(1,"jack"); map.put(2,"tom"); set<map.entry<integer, string>> entries = map.entryset(); // 使用迭代器进行遍历 ,增强 for同理 iterator<map.entry<integer, string>> iterator = entries.iterator(); while (iterator.hasnext()) { map.entry<integer, string> entry = iterator.next(); system.out.println(entry.getkey() + " " + entry.getvalue()); }
上述以hashmap为例,可以调用其 entryset() 方法,将map里面的每个<k,v>键值对 都封装成一个map.entry<integer, string>对象,因为用set接口接收,所以就可以使用迭代器 或者 for-each()进行遍历了,并且每个entry对象都有getkey() 和 getvalue() 方法,分别获取key值和value值。
基本关系(简易版)
2、collection接口一般是用实现了collection接口的接口或者类来接受具体实现类的对象,因为上图可以看出,collection接口是一系列接口和类的父接口,其内部实现的方法比较少,所以不能调用一些子类有的常见方法。
1.通过泛型来指定相应集合中的对象类型注意:这里传入的类型只能是引用类型,如果是基本数据类型,应该用其包装类来指定
collection<string> collection1 = new arraylist(); collection1.add("haha"); collection1.add("world"); collection<integer> collection2 = new arraylist(); collection2.add(1); collection2.add(2); //collection2.add("hh");// 这里会报错,不符合传入的指定类型integer
2.collection常见方法使用方法作用
void clear() 删除集合中的所有元素
boolean isempty() 判断集合是否没有任何元素,俗称空集合
boolean remove(object e) 如果元素 e 出现在集合中,删除其中一个
boolean add(e e) 将元素 e 放入集合中
int size() 返回集合中的元素个数
object[] toarray() 返回一个装有所有集合中元素的数组
注意:在最后一个object[] toarray() 方法中,返回的是object[] 类型的数组,底层的做法是:将集合中的元素一个一个拿出来,将其转为 object 对象,存入要返回的数组中,最终返回一个 object[] 类型的数组。转换为 string[] 数组时会引发类型转换异常。
因为这里不能保证数组中的每个元素都转成了string,而只是将其整体强转为了string[] 类型的数组,所以如果非要转,需要先遍历返回的结果,将其一个一个转为string类型,最后赋给一个string[] 类型的数组。java里不建议整体对数组类型进行转换。
object[] objects = collection1.toarray(); string[] strings = new string[objects.length]; for (int i = 0; i < objects.length; i++) { strings[i] = (string)objects[i];// 一个一个转,但是没啥必要 }
3、map 接口通过< k, v >键值对的形式来存储数据,此处的 key 值唯一,且每个 key 值都可以对应其相应的 value 值。不同的 key 值可以对应相同的 value 。hashmap: 在存放元素时,根据其key值,调用内部的hashcode函数,找到元素该放入的位置,所以哈希表中元素不是按照存入的顺序存放的。
map常见方法使用方法作用
v get(object k) 根据指定k查找对应v
v getordefault(object k, v defaultvalue) 根据指定的 k 查找对应的 v,没有找到则返回默认值
v put(k key, v value) 将指定的 k-v 放入 map
boolean containskey(object key) 判断是否包含 key
boolean containsvalue(object value) 判断是否包含 value
set<map.entry<k, v>> entryset() 将所有键值对返回
boolean isempty() 判断是否为空
int size() 返回键值对的数量
hashmap<integer, string> map = new hashmap<>(); // put() map.put(1,"张飞");// 这里的 key 值唯一 map.put(1,"宋江");// 如果二次插入的 key 值之前有,则替换其 value值 map.put(2,"jack"); system.out.println(map); // get() string s1 = map.get(1);// 返回 宋江 string s3 = map.getordefault(3,"三团");// 未找到,返回 三团 // entryset() // 该方法返回一个 set<map.entry<integer, string>> 对象 set<map.entry<integer, string>> entries = map.entryset(); for (map.entry<integer, string> entry : entries) { // 通过 entry.getkey() 和 entry.getvalue() 获取每个entry对应的 k, v值 system.out.println(entry.getkey() + " " + entry.getvalue()); }
4、具体的实现类
以上就是java集合框架的数据结构是什么的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product