java 动态添加map元素_Java集合(Collection、Map)

本文详细介绍了Java集合框架,重点关注Map接口及其动态添加元素的方法。Map接口用于存储键值对,提供了多种实现类如HashMap、LinkedHashMap和TreeMap,它们在性能和特性上有不同侧重。HashMap是主要实现类,线程不安全但效率高,而LinkedHashMap则能保持插入顺序。此外,文章还探讨了List接口和常用实现类,以及集合的遍历和操作技巧。
摘要由CSDN通过智能技术生成

0、Java集合框架概述

集合可以将多个对象的引用动态放入容器中,方便对对象进行一些操作。现有的用来存放多个对象的结构为Array数组,但数组存在一些弊端:

①数组初始化之后,长度不可以进行改变,不便于扩展

②数组中提供的方法和属性少,不便于进行添加、删除、插入等操作,且效率不高,同时无法直接获取存储元素的个数

③数组存储的数据是有序的可以重复的

而java集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组

Java集合体系

Collection接口:单列数据,定义了存取一组对象的方法的集合

-------------|List接口:元素有序、可重复的集合 类似一个“动态”数组

------------------------|ArryaList类:是List接口的主要实现类;线程不安全,效率高;底层使用Object[ ]数组

------------------------|LinkedList类:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表

------------------------|Vector类:作为List接口的古老实现类;线程安全,效率低;底层使用Object[ ]数组

-------------|Set接口:元素无序、不可重复的集合 更接近于高中所讲的“集合”概念

------------------------|HashSet类:作为Set接口的主要实现类;线程不安全的;可以存储null值

------------------------------------|LinkedHashSet类:作为HashSet的子类,遍历器内部数据时,可以按照添加时的顺序遍历

------------------------|TreeSet类:可以按照添加对象的指定属性进行排序

Map接口:双列数据,保存具有映射关系“key-value”对的集合 类似于数学上的y=f(x)

-------------|Hashtable类:作为古老的实现类,线程安全,效率低,不能存储null的key和value

------------------------|Properties类:常用来处理文件,key和value都是String类型的

-------------|HashMap类:是Map的主要实现类,线程不安全的,效率高;可以存储null的key和value

------------------------|LinkedHashMap类:保证在遍历map元素时,可以按照添加的顺序进行遍历(在原有结构的基础上,按照添加顺序使用了双链表)

-------------|TreeMap类:按照添加的key-value对进行排序,实现排序遍历(key的自然排序和定制排序)

439e5312f7e4

Collection接口继承树

439e5312f7e4

Map接口继承树

1.Collection接口

1.1 Collection接口中的常用方法

使用Iterator接口遍历集合元素

Collections接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前

@Test

public void test1(){

Collection col=new ArrayList();

col.add("aaaa");

col.add("bbbb");

col.add("vv");

col.add("wweeeee");

Iterator iterator = col.iterator();

while(iterator.hasNext()){ //判断是否还有下一个元素

//next():指针下移,将下移后集合位置上的元素返回

System.out.println(iterator.next());

}

}

使用foreach遍历数组元素

底层仍然是调用Iterator完成操作,但注意用来修改数组元素是无用的

@Test

public void test1(){

Collection col=new ArrayList();

col.add("aaaa");

col.add("bbbb");

col.add("vv");

col.add("wweeeee");

Iterator iterator = col.iterator();

while(iterator.hasNext()){ //判断是否还有下一个元素

//next():指针下移,将下移后集合位置上的元素返回

System.out.println(iterator.next());

}

//注意此处一定要重新获取

iterator=col.iterator();

while(iterator.hasNext()){ //判断是否还有下一个元素

//next():指针下移,将下移后集合位置上的元素返回

Object str=iterator.next();

if (str.equals("vv"))

iterator.remove(); //使用iterator删除集合中的元素

}

//使用foreach循环遍历集合元素

for(Object str:col){

System.out.println(str);

}

}

add(Object e) 添加元素

size() 集合中的元素个数

addAll(Collection col) 将集合中的元素全部添加到当前集合中

isEmpty()

boolean remove(Object obj) 通过元素的equals方法判断是否是要删除的那个元素,只会删除找到的第一个元素

boolean removeAll(Collection col) 取当前集合的差集

boolean retainAll(Collection col) 把交集的结果存在当前集合中,不影响c

boolean equals(Object o)判断集合是否相等

Object[] toArray()转换成对象数组

hashCode()获取当前集合对象 的哈希值

扩展:数组变成集合 Arrays.asList(array)

1.2 List接口中的方法

java中使用数组存储数据具有局限性(如上所述),所以通常使用List代替数组。List集合类中元素有序、可重复,集合中的每个元素都有其对应的顺序索引,可以根据元素的存储位置序号存取容器中的元素。List中的常用实现类有:ArrayList、LinkedList、Vector

List接口:元素有序、可重复的集合 类似一个“动态”数组

-------|ArryaList类:是List接口的主要实现类;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值