Java集合

概念

    Java中的集合是工具类,可以存储任意数量的具有共同属性的对象

集合和数组的区别

    用数组存储固定长度的数据,数组是内存中一块连续的空间

    用集合存储动态变化的数据;

集合的应用场景
    • 无法预测存储数据的数量(集合解决动态问题,数组解决静态问题);

    • 同时存储具有一对一关系的数据;
    • 需要进行数据的增删改查;
    • 解决数据重复问题;

集合的框架体系

在这里插入图片描述
• Collection:存储类的对象Collection有三个子接口,List(序列)、Queue(队列)、Set(集)
    • List:(序列) 有序的、允许重复的 主要实现类:ArrayList:长度动态增长的数组
    • Queue:(队列) 有序的、允许重复的 主要实现类:LinkedList:链表的内容
    • Set:(集)无序的、不允许重复的 主要实现类:HashSet:哈希集
• Map:键值对内容什么是键值对:比如学生都有对应的学号,通过学号就可以指向某个具体的学生。
    • Map实现类HashMap(哈希表的意思,存储以键值对表示的形式)

List集合

    • List是元素有序并且可以重复的集合,称为序列。
    • List 是一个接口,它继承于Collection的接口。
    • List可以精确地控制每个元素的插入位置,或删除某个位置的元素。
    • List的两个主要实现类:ArrayList和LinkedList。

ArrayList

    ArrayList底层是由数组实现的,长度动态增长。ArrayList中的元素可以为null且可以有多个。在列表尾部插入或删除数据非常有效,但是在中间则需要进行大量的数组复制,耗费较多资源。所以更适合查找和更新元素

Collection接口和List接口中方法:
在这里插入图片描述
实现类ArrayList中构造器及方法:
在这里插入图片描述
举例:

import java.util.ArrayList;
import java.util.List;

public class ListDemo1 {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("Java");
		list.add("C");
		list.add("C++");
		list.add("Go");
		list.add("Swift");
		//输出列表中元素的个数
		System.out.println("列表中元素的个数为:" + list.size());
		
		//遍历输出所有的集合元素
		System.out.println("*****************************");
		for(int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + ",");
		}
		
		//移除列表中的C++
		System.out.println("\n*****************************");
		//list.remove(2);
		list.remove("C++");
		System.out.println("移除列表中的C++元素后,集合元素为:");
		for(int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + ",");
		}
	}
}

补充:
    1.add方法的引用
在这里插入图片描述
可以添加String类型的数据,也可以根据指定索引位置进行添加,也可以添加另外一个list集合。
在创建ArrayList对象时,可以规定元素的类型,如:

List<String> list = new ArrayList<String>();

    2.查找方法:
contains(o);查找某个元素,返回值为布尔值;
indexOf(); 查找某个元素,返回值为元素的索引,若没有返回-1;

    3.删除方法:
clear(); 清空;
remove(index); 根据指定索引删除;
remove(Object obj); 删除某个指定元素;

    4.修改方法:
set(int index,E element); 根据指定索引替换元素;

    5.遍历方法

for(String str : list) {
			System.out.println(str);
		}

可以使用增强型for循环;

Set集合

    Set中元素无序且不可以重复,称为集。
    HashSet是Set的一个重要实现类,称为哈希集。HashSet中的元素无序且不可以重复,HashSet中只允许一个null元素。HashSet底层是HashMap实现。HashSet具有良好的存取和查找性能,所以适合存取和查找的情况。
    HashSet 类是按照哈希算法来存储集合中的元素,使用哈希算法可以提高集合元素的存储速度,当向 Set 集合中添加一个元素时,HashSet 会调用该元素的 hashCode() 方法,获取其哈希码,然后根据这个哈希码计算出该元素在集合中的存储位置。

Set<String> set = new HashSet<>();

新增方法:
add(); 添加元素;

查找方法:
contains(obj);查找是否有某个元素,返回值为布尔值;

删除方法:
remove(); 删除某个元素;
不要通过for循环遍历去删除,因为长度会变。

删除某个元素
Iterator<String> it = set.iterator();
    while(it.hasNext()) {
      String next = it.next();
      if("b".equals(next)) {//"b"写在前面,防止空指针
        it.remove();
      }
    }

修改方法:
可以先删除后添加,因为是无序的;

遍历方法:
    利用迭代器(Iterator),Iterator接口可以以统一的方式对各种集合元素进行遍历;
    hasNext()方法检测集合中是否还有下一关元素,它的返回值是boolean类型;
    next()方法返回集合中的下一个元素,返回Object类型的对象。

// 在Set集合中没有取元素的方法
		// 获取迭代器接口
		Iterator it = set.iterator();
		// 遍历迭代器并输出元素
		while (it.hasNext()) {
			System.out.print(it.next() + " ");
		}

说明:元素存贮在迭代器中,再通过遍历迭代器来遍历存贮在迭代器中的元素,然后通过hasNext()判断迭代器中是否还有下一个元素,返回ture时再通过next()方法打印出集合中所有元素

Map集合

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

HashMap实现类
• 基于哈希表的Map接口的实现;
• 允许使用null值和null键;
• key值不允许重复;
• HashMap中的Entry对象是无序排列的。

Map<String, String> map = new HashMap<String, String>();

新增方法:
在这里插入图片描述

map.put("html", "超文本标记语言");

查找方法:
在这里插入图片描述
在这里插入图片描述根据key获取到value

删除方法:
在这里插入图片描述

修改方法:
在这里插入图片描述
遍历方法:
在这里插入图片描述
获取到map所有key的<set类型>集合

Set<String> keys = map.keySet();
		for(String str : keys) {
			System.out.println(map.get(str));
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值