Java集合(一)什么是集合

什么是集合

    1、集合类存放于java.util包中。

    2、集合类型主要有3种:set(集)、list(列表)和map(映射)。

    3、集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。

    简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。


集合有哪些以及它们之间的关系

Java 集合框架主要结构图


为了能看懂第一张集合框架图,我们先讲解一下在这里会用到的UML类图的知识(这里就不展开具体讲解UML知识)。

1、实现:接口和实现类的关系



2、泛化:父类和子类之间的关系,继承就是泛化的一种



理解了UML类图之后,我们就能从第一张图中分析得知:

1、集合主要分为Collection和Map两个接口

2、Collection又分别被List和Set继承

3、List被AbstractList实现,然后分为3个子类,ArrayList,LinkList和Vector

4、Set被AbstractSet实现,又分为2个子类,HashSet和TreeSet

5、Map被AbstractMap实现,又分为2个子类,HashMap和TreeMap

6、Map被Hashtable实现

Collection 
├List 
│├LinkedList 
│├ArrayList 
│└Vector 
│ └Stack 
└Set 
  ├HashSet 
  └TreesSet 
Map 
├Hashtable 
├HashMap 

└TreeMap  


Collection接口介绍

Collection作用就是规定了一个集合有哪些基本的操作

    collection的常规用法:

    

Collection c = new ArrayList();
		Iterator it = c.iterator();
		while(it.hasNext()){
			Object ob = it.next();
		}


这里主要是插入数据,清空数据,是否包含,是否相等,集合里的数据个数和转化成数组这几种操作

比如 :

  • int size() 
    • 获取元素个数
    • boolean isEmpty()
    • 是否个数为 0
    • boolean contains(Object element)
    • 是否包含指定元素
    • boolean add(E element)
    • 添加元素,成功时返回 true
    • boolean remove(Object element)
    • 删除元素,成功时返回 true
    • Iterator<E> iterator()
    • 获取迭代器

还有一些操作整个集合的方法,比如 :

  • boolean containsAll(Collection<?> c) 
    • 是否包含指定集合 c 的全部元素
  • boolean addAll(Collection<? extends E> c) 
    • 添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true
  • boolean removeAll(Collection<?> c) 
    • 删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true
  • boolean retainAll(Collection<?> c) 
    • 保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true
  • void clear() 
    • 删除所有元素

还有对数组操作的方法:

  • Object[] toArray() 
    • 返回一个包含集合中所有元素的数组
  • <T> T[] toArray(T[] a) 
    • 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型

在 JDK 8 以后,Collection 接口还提供了从集合获取连续的或者并行流:

  • Stream<E> stream()
  • Stream<E> parallelStream()

于Collection接口相关还有一个抽象类AbstractCollection:

AbstractCollection是一个抽象类,实现了Collection接口的部分功能,实现了一些最基本的通用操作,把复杂的和业务相关的延迟到子类实现。

在AbstractCollection中,主要实现了contains(), isEmpty(), toArray(), remove(), clear() 这几个操作。有兴趣的同学可以自行研究下,逻辑都比较简单。

总结:本章已经简单的介绍了集合框架里面的结构。具体每个集合的分析放到后面的章节

  • 27
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
掌握集合的概念、体系结构、分类及使用场景 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实现第一题?
### 回答1: Java集合是用于存储和操作一组对象的数据结构。它提供了许多接口和类,包括列表、集合、队列、堆栈、映射等,可以帮助我们更方便地操作和管理数据。Java集合框架提供了高效的算法和数据结构,使得开发人员可以更轻松地处理各种数据结构和算法问题。Java集合框架还提供了可扩展性、类型安全、线程安全和高性能等优点,在Java编程中广泛使用。 ### 回答2: Java集合是用于存储和操作一组对象的数据结构。它提供了一种方便和高效的方式来组织和访问数据。Java集合框架由一组接口、类和算法组成,用于处理各种数据类型。 Java集合提供了不同类型的集合类,包括List、Set和Map等。List是有序的集合,允许重复元素;Set是无序的集合,不允许重复元素;而Map是键值对的集合。通过使用这些集合类,我们可以轻松地添加、删除和修改元素,以及对元素进行遍历、搜索和排序等操作。 Java集合还提供了各种算法和方法,用于对集合中的元素进行排序、查找和过滤等操作。例如,我们可以使用Collections类中的sort()方法对List进行排序,使用contains()方法来检查集合中是否包含某个元素。这些算法和方法可以极大地简化我们在处理数据时的工作。 Java集合的优点是灵活性和效率。它提供了多种类型的集合类,适应不同的数据处理需求。而且,Java集合框架经过优化,具有高度的性能和效率。它使用了高效的数据结构和算法,使得在处理大量数据时,可以达到很好的性能。 总之,Java集合是用于存储和操作一组对象的框架。它提供了一种方便和高效的方式来组织和访问数据,使得我们能够更轻松地处理数据,并且在性能上具有很好的优势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值