【java】集合总结


在这里插入图片描述
数组:就是一种集合
数组的明显缺点:大小是固定的,不可变的

集合框架的基本结构:

Collection 接口

			可以存放对个元素的容器,这就是集合
			有的集合是有序的,有的集合是无序的
			有的集合允许重复元素,有的集合不允许有重复元素

在这里插入图片描述

Collection接口和Collections类有啥区别?

1 Collection是一个接口规定了集合的基本操作
2 Collections 是一个类,主要来操作集合的

List 接口

列表:有序的
实现类:

ArrayList 类

		是list接口的大小可变数组的实现
		是list接口的实现类
		底层是数组,大小可变
public static void main(String[] args) {
		//定义数组
		int [] arr = new int[5];
		//这里的<>是用来指定元素的类型,这个东西叫泛型
		 ArrayList<String> list = new ArrayList<String>();
		 //这是就创建了一个长度为0的list
		 
		 //添加元素
		 list.add("java");
		 list.add("mysql");
		 list.add(0, "c++");
		 System.out.println(list);
		 //删除元素
		 list.remove(0);//删除指定下标的元素
		 list.remove("java");
		 System.out.println(list);//删除指定的元素
		 
		 //如果是一个存放了整数的List
		 //泛型不能使用基本类型
		 ArrayList<Integer> list1 = new ArrayList<Integer>();
		 list1.add(1);
		 list1.add(2);
		 list1.add(3);
		 list1.add(4);
		 list1.add(5);
		 //删除5
		 list1.remove(4);
		 list1.remove(new Integer(5));//删除下标
		 list1.remove(new Integer(5));//指定5删除
		 System.out.println(list1);
		 System.out.println(list1.size());//输出长度
		 //替换
		 list1.set(0, 100); //替换指定下标的元素
		 System.out.println(list1);
		 //清楚所有元素
		 list1.clear();
		 System.out.println(list1);
	}

LinkedList 类

				是list接口的实现类
				底层采用的是链表 
				操作和ArraysList一样

ArraysList与LinkedList的区别
1 底层采用的方式不同 ArraysLIst是数组 LinkedList是链表
2 ArraysList元素查找要快,添加删除慢;
LinkedList元素查找要慢,添加删除快;

Vector类

Vector类和ArrayList基本一样
Vector是线程安全的,是同步的

List是一个有序的集合,因此可以用下标访问元素
get(index) 通过下标来访问元素;
在这里插入图片描述

Set 接口

HashSet 类

无序的,允许使用空值null

public class Demo05 {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		//添加
		set.add("java");
		set.add("mysql");
		set.add("c++");
		set.add(null);
		System.out.println(set.size());
		set.add("java");//集合中元素已经存在,添加失败返回false
		System.out.println(set.size());
	}

TreeSet类

可以排序,使用基本一样

Map(mapping 映射) 接口

映射 :A->B
Map接口中的元素必须是一对键值(Key–Value)
可以从集合中,根据Key找到它对应的Value

HashMap

不同步,可以使用空值,空键

public static void main(String[] args) {
		//创建对象
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		
		//添加元素
		map.put("仝贺", 22);
		map.put("tom", 18); //(键,值)tom和18形成了一个映射关系,被放到了map中
		
		//取出元素
		System.out.println(map.get("tom"));//用map.get方法,通过键取值
		
		//移除键值对
		map.remove("仝贺");
		System.out.println(map.size());//判断,map的长度看是否移除
		
	}

HashTable

同步的,不可以使用空值,空键

集合的遍历

List集合

1 循环下标
2 Foreach (基于迭代器)
3 使用迭代器 Iterator

public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("java");
		list.add("ps");
		list.add("mysql");
		list.add("c++");
		//迭代器
		Iterator<String> it = list.iterator();
		while(it.hasNext()) {//it.hasNext()是否存在下一个,存在循环执行
			
			String s = it.next();//取出迭代器下一个元素
			System.out.println(s);
			
		}

Set集合

不能循环,使用Foreach,使用迭代器

map集合

不能使用循环
1 先将键/值对,生成一个set,然后再遍历

public static void main(String[] args) {
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("仝贺", 22);
		map.put("tom", 18);
		map.put("java", 20);
		map.put("jing", 19);
		//遍历
		Set<String> keys = map.keySet();//取出所有的键
		for (String key : keys) {
			System.out.println(key + "-->"+ map.get(key));
			
		}
		Collection<Integer>values = map.values();
		for (Integer value :values) {
			System.out.println(value);
		}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值