java基础之集合类

简介: java基础之集合类

一、Java集合类是什么?java集合类型主要有哪些?

首先看一张概念图,这里囊括了集合类的大部分关系及内容 
这里写图片描述 
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 
通俗地讲,集合类就是把一些对象的引用放在一起(特别是我们需要存放一些数据却不知道个数的情况下),便于我们直接从集合中使用这些引用。通常来说,集合内所包含的引用,都是具有某种特性。 
集合类型主要有3种:set(集)、list(列表)和map(映射)。

二、set、list和map的区别有哪些? 
用一个表格总结一下

List和Set是继承了Collection接口,List有序且允许元素重复,Set不允许元素重复。ArrayList、LinkedList和Vector是List的三个主要的实现类,HashSet和TreeSet是Set的两个主要的实现类。 
Map则是与List和Set有所不同,区别就在于Map是键与值之间的关系,而其中的键我们就可以看做是一个集合。其中的键是必须唯一的,而值可以重复。如果你想学习Java可以来这个群,首先是一二六,中间是五三四,最后是五一九,里面有大量的学习资料可以下载。 

三、详细解析

1、Collection常用方法

  Collection coll=new ArrayList();  
    Collection coll2=new ArrayList();  
    Object[] a = {new Integer(1)};  
    //单元素操作  
    boolean b = coll.add("123");//添加元素  
    boolean b1 = coll.remove("123");//删除元素  
    //查询操作  
    int i = coll.size();//返回当前集合中元素的数量  
    boolean b2 = coll.isEmpty();//判断集合中是否有任何元素  
    boolean b3 = coll.contains("123");//查找集合中是否含有对象"123"  
    Iterator ite = coll.iterator();//返回一个迭代器,用来访问集合中的各个元素  
    //组操作  
    boolean b4 = coll.containsAll(coll2);//查找集合中是否含有集合coll2中所有元素  
    boolean b5 = coll.addAll(coll2);//将集合coll2中所有元素添加给该集合  
    coll.clear();//删除集合中所有元素  
    boolean b6 = coll.removeAll(coll2);//从集合中删除集合coll2中的所有元素  
    boolean b7 = coll.retainAll(coll2);//从集合中删除集合coll2中不包含的元素  
    //Collection转换为Object数组  
    Object[] obj = coll.toArray();//返回一个内含集合所有元素的array  
    //返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。  
    Object[] obj1 = coll.toArray(a);  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2、List的常见用法

List普通用法:

    List list = new ArrayList();  
    //添加元素  
    list.add(1);  
    //在2处添加元素  
    list.add(2, 1);  
    //添加集合  
    list.addAll(new ArrayList());  
    //在3处添加集合  
    list.addAll(3,new ArrayList());  
    //取得1处的元素  
    Object obj = list.get(1);  
    //返回对象"1"第一次出现的位置,没有则为-1  
    int i= list.indexOf(1);  
    //返回对象"1"最后一次出现的位置,没有则为-1  
    int j= list.lastIndexOf(1);  
    //删除2位置的元素  
    list.remove(2);  
    //将1处的对象改为"2"  
    list.set(1, 2);  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

List特殊用法:

  List list = new ArrayList();  
    //返回一个列表迭代器,用来访问列表中的元素  
    ListIterator listIterator = list.listIterator();  
    //返回一个列表迭代器,用来从指定位置2开始访问列表中的元素  
    ListIterator listIterator2 = list.listIterator(2);  
    //从1(包含)到2(不包含)范围中各个元素的列表视图  
    List subList = list.subList(1, 2);  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

LinkedList的特殊用法:

    //构建一个空的链接列表  
    LinkedList list = new LinkedList();  
    //构建一个空的链接列表,并且添加集合list的所有元素  
    LinkedList list1 = new LinkedList(list);  
    //将对象1加到列表开头,addLast()加到最后  
    list.addFirst(1);  
    //获得第一个元素,getLast()获得最后一个元素  
    Object obj = list.getFirst();  
    //移除第一个元素,removeLast()移除最后一个元素  
    list.removeFirst();  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

ArrayList的特殊用法:

  ArrayList list = new ArrayList();  
    //将ArrayList对象容量增加5  
    list.ensureCapacity(5);  
    //整理ArrayList对象容量为列表当前大小,程序可使用这个操作减少ArrayList对象存储空间.  
    list.trimToSize();  
相关文章
|
1天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
8 0
|
1天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
6 0
|
1天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
1天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
2天前
|
Java 编译器 开发者
Java一分钟之-继承:复用与扩展类的特性
【5月更文挑战第9天】本文探讨了Java中的继承机制,通过实例展示了如何使用`extends`创建子类继承父类的属性和方法。文章列举了常见问题和易错点,如构造器调用、方法覆盖、访问权限和类型转换,并提供了解决方案。建议深入理解继承原理,谨慎设计类结构,利用抽象类和接口以提高代码复用和扩展性。正确应用继承能构建更清晰、灵活的代码结构,提升面向对象设计能力。
9 0
|
2天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
11 0
|
2天前
|
Java API 调度
【Java多线程】Thread类的基本用法
【Java多线程】Thread类的基本用法
6 0
|
2天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
3天前
|
存储 安全 算法
掌握Java并发编程:Lock、Condition与并发集合
掌握Java并发编程:Lock、Condition与并发集合
11 0
|
3天前
|
存储 安全 Java
深入理解Java集合框架
深入理解Java集合框架
8 0