集合

集合

Collection和Map

Collection的继承接口有List序列、Queue队列、Set集。序列和队列有序允许重复,集里的元素无序不允许重复。

List实现类有ArrayList和LinkedList。Queue实现类有LinkedList。Set实现类有HashSet。

Map的实现类有HashMap。

List概述

  • List是元素有序并且可以重复的集合,成为序列。
  • List可以精确的控制每个元素的插入位置,或删除某个位置的元素。
  • List的两个主要实现类是ArrayList和LinkedList。

ArrayList底层是由数组实现,动态增长,以满足应用程序的要求,在列表尾部插入或删除数据非常有效,更适合查找和更新元素,ArrayList中的元素可以为null。

ArrayList方法

返回的类型方法和描述
booleanadd(E e)
添加特殊的元素到序列的尾部
voidadd(int index,E element)
在index处插入一个特殊的元素
voidclear()
删除序列中所有的元素
booleancontains(Object o)
如果包含元素o则返回true,否则返回false
Eget(int index)
返回当前索引处的元素
intindexOf(Object o)
返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。
booleanisEmpty()
如果序列中没有元素则返回true,否则返回false
Eremove(int index)
返回序列中特殊位置的元素
booleanremove(Object o)
从列表中删除指定元素的第一个匹配项(如果存在)。
Eset()
用指定的元素替换此列表中指定位置的元素。
intsize()
返回在序列中元素的个数
voidsort(Comparator<? super E>c)
根据指定比较器产生的顺序对该列表进行排序。
Object[]toArray()
返回一个数组,该数组按正确的顺序(从第一个元素到最后一个元素)包含此列表中的所有元素。

LinkedList

方法名说明
LinkedList()构造一个空列表
LinkedList(Collection<? extends E>c)构造一个包含指定collection中的元素的列表,这些元素按其collection的迭代器返回的顺序排列
返回的类型方法和描述
booleanadd(E e)
将指定元素添加到此列表的结尾
voidadd(int index,E element)
在此列表中指定的位置插入的指定的元素
booleanaddAll(Collection<? extends E> c)
添加指定collection中的所有元素到此列表的结尾
booleanaddAll(int index,Collection<? extends E>c)
添加指定collection中的所有元素到此列表的结尾
voidaddFirst(E e)
将指定元素插入此列表的开头
voidaddLast(E e)
将指定元素添加到此列表的结尾
voidclear()
从此列表中移除所有元素
Eget(int index)
返回此列表中指定位置处的元素
intindexOf(Object o)
返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回-1
Eremove()
获取并移除此列表的头(第一个元素)
Eremove(int index)
移除此列表中指定位置处的元素
booleanremove(Object o)
从此列表中移除首次出现的指定元素(如果存在)
Object[]toArray()
返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组

Set概述

Set是元素无序并且不可以重复的集合,被称为集。

HashSet

  • HashSet是Set的一个重要实现类,称为哈希集。
  • HashSet中的元素无序并且不可重复
  • HashSet中只允许一个null元素
  • 具有良好的存取和查找性能。
返回类型方法和描述
booleanadd(E e)
在这个集合中添加一个具体的元素,如果不存在则返回true。
booleanaddAll(Collection<? extends E> c)
如果指定集合中的所有元素尚不存在,则将它们添加到此集合(可选操作)。
voidclear()
从此集中中移除所有元素
booleancontains(Object o)
如果此集合存在这个具体的元素则返回true
inthasCode()
返回该集合的哈希值
booleanisEmpty()
如果该集合没有元素存在则返回true
Iteratoriterator()
返回此集合中元素的迭代器。
booleanremove(Object o)
如果存在,从该集合中移除具体的元素
booleanremoveAll(Collection<?> c)
从该集合中移除包含在指定集合中的所有元素(可选操作)
intsize()
返回该集合中元素的数量
Object[]toArray()
返回包含此集中所有元素的数组。

Iterator迭代器

  • Iterator接口可以以统一的方式对各种集合元素进行遍历
  • hasNext()方法检测集合中是否还有下一个元素
  • next()方法返回集合中的下一个元素

Map

  • Map中的数据是以键值对(key-value)的形式存储的
  • key-value以Entry类型的对象实例存在
  • 可以通过key值快速地查找value
  • 一个映射不能包含重复地键
  • 每个键最多只能映射一个值

HashMap

  • 基于哈希表的Map接口的实现
  • 允许使用null值和null键
  • key值不允许重复
  • HashMap中的Entry对象是无序排列的
返回的类型方法和描述
voidclear()
从此映射中删除所有映射。
booleancontainsKey(Object key)
如果此map包含了对于具体的映射则返回true
booleancontainsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回true。
Set<Map.Entry<K,V>>entrySet()
返回此映射中包含的映射的集合视图
Vget(Object key)
返回该键对应的值如果该map不包含该键对应的值则返回null
booleanisEmpty()
如果map中不存在键值映射了,则返回true
SetkeySet()
返回此键值映射的包含键的Set视图
Vput(K key,V value)
将指定值与此映射中的指定键相关联。
Vremove(Object key)
从该映射中移除指定键的映射(如果存在)
booleanremove(Object key,Object value)
仅当指定项当前映射到指定值时,才删除该项。
intsize()
返回映射的键值对的数量
Collectionvalues()
返回此映射中包含的值的集合视图。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880004 注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:name:Person对象的姓名,id:Person对象的身份证号) 主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5个对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的person的HashMap集合; 2)往集合中添加5个"键-值"对象: "id"-"1"; "name"-"张三"; "sex"-"男"; "age"-"25"; "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的List、Set、Map有哪些不同? 2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值