第九章_集合

本文详细介绍了Java集合框架中的Collection接口,包括List子接口及其ArrayList和LinkedList实现类,Set接口与HashSet子类,以及Map接口和HashMap实现类。内容涵盖了各个接口和类的基本特性和使用场景,如ArrayList的内部数组机制、LinkedList的双向链表结构,以及HashMap的键值对存储和重写hashcode()与equals()的重要性。
摘要由CSDN通过智能技术生成

集合Collection

用来存放对象的数据结构,其长度可变,且集合中可以存放不同类型的对象。并且提供了一组操作成批对象的方法

在这里插入图片描述

数组的缺点:长度是固定不可变的,访问方式单一,插入、删除等操作繁琐。

泛型:<>
用来约束集合中元素的类型,只能写引用类型,不能是基本类型

一、学习根接口集合:

Collection<E>,接口里是没有构造方法的,也无法创建对象

Collection c = new Collecion();报错:因为Collection是接口,不能实例化
1.创建对象
//<Integer>是泛型,用来约束集合中元素的类型,只能写引用类型,不能是基本类型
Collection<Integer> c=new ArrayList();

2.常用方法
c.add(100);向集合中添加元素
c.add(200);
c.add(300);
System.out.println(c);
c.clear();清空集合
System.out.println(c.contains(200));判断集合中是否存在指定元素
System.out.println(c.equals(100));判断集合是否和100相等
System.out.println(c.hashCode());返回集合的哈希码值
System.out.println(c.isEmpty());判断集合是否为空
System.out.println(c.remove(200));删除集合中的元素,删除成功后返回true
System.out.println(c.size());获取集合的长度
Object[] o=c.toArray();把集合中的元素放到一个数组中								 		System.out.println(Arrays.toString(o));打印集合中的元素(要先放到数组中)

集合间的操作
Collection<Integer> c2=new ArrayList();
c2.add(9);
c2.add(8);
c2.add(7);
c.addAll(c2);往集合里添加一个集合c2
System.out.println(c);
System.out.println(c.containsAll(c2));判断集合c里面是否包含c2集合
System.out.println(c.removeAll(c2));从c集合中移除c2集合
System.out.println(c);
System.out.println(c.retainAll(c2));从c集合中移除c集合
System.out.println(c);

3.遍历/迭代集合中的元素 Iterator<E> inIterator
Iterator<Integer> it=c.iterator();
while (it.hasNext()) {
   //hasNext()用来判断集合中是否有下一个元素,有就返回true
	Integer inte =it.next();//获取迭代到的元素
	System.out.println(inte);
}

List extends Collection 接口是继承接口,并且可以继承多个接口,不能实现接口。因为接口的成员方法都具有抽象属性,不具有方法体,无法完成实现。

二.学习子接口:List

List接口: 数据都有下标,数据可重复有序插入元素高效
有序的。此接口的用户可以对列表中的每个元素的插入位置进行精确的控制。用户可以根据元素的整数索引访问元素,并搜索列表中的元素

public static void main(String[] args) {
   
		1.创建List接口对象------是接口,不可直接创建对象,用实现类创建
		List<String> list=new ArrayList<String>();
		
	2.常用方法
	继承自Collection接口的方法
	list.add("jack");添加元素													
	list.add("toney");
	list.clear();清空集合															
	System.out.println(list.contains("jack"));判断集合是否包含jack
	System.out.println(list.equals("jack"));判断集合是否和jack相等
	System.out.println(list.hashCode());返回集合的哈希码值		
	System.out.println(list.isEmpty());判断集合是否为空	
	System.out.println(list.remove("jack"));移除集合中的元素jack	
	System.out.println(list.size());获取集合的长度				
	Object[] array = list.toArray();把集合的元素放入数组	
	System.out.println(Arrays.toString(array));将数组中的元素展示出来
		
	list特有方法
	list.add(1, "yuyu");在指定下标处添加指定元素		
	System.out.println(list.get(2));获取下标为2的元素		
	System.out.println(list.indexOf("toney"));获取指定元素第一次出现的下标		
	System.out.println(list.lastIndexOf("toney"));获取元素最后一次出现的下标	
	System.out.println(list.remove(3));按照下标删除指定元素	
	System.out.println(list.set(0, "qian"));置换元素,把下标为0的元素换成qian	
	list.subList(0, 5);截取元素,含头不含尾						
	List<String> subList = list.subList(0, 5);
	System.out.println(subList);
		
	集合间的操作
	List<String> list2=new Arr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如青春如烈火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值