Java基础笔记22- 集合

Java基础笔记22- 集合

  • 简介

    • 集合是类似于数组的容器,不同的是数组是固定大小,且存放的是同一数据类型的数据,集合的大小不固定,可存放不同数据类型的数据(只能存放引用数据类型,基本数据类型数据存放的是其包装类),可以进行对内部数据(被称为元素)的增加,删除,判断。
    • 一部分集合是有序的,也有一部分集合是无序的,集合根据存储方式的不同也分为单列集合与双列集合。
    • 集合关键字:Collection 单列集合 Map 双列集合
1.Collection 单列集合
  • List 有序集合

  • Set 无序集合

  • Collection是一种接口,使用时需要创建子类对象来对元素进行操作,可通过ArrayList()来接收元素。

    • Collection coll = new ArrayList();
      
1.1 常用Collection方法
  • 添加

    • add(Object obj) addAll(Collection coll)
  • 移除

    • remove(Object obj) removeAll(Collection coll) clear()
  • 判断

    • isEmpty() constains(Object obj) constainsAll(Collection coll)
  • 代码示例:

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {

	public static void main(String[] args) {
		//创建一个集合
		Collection coll1 = new ArrayList();
		//添加一个元素
		coll1.add("元素1");
		coll1.add(1111);
		coll1.add(1111);
		coll1.add("abc");		
		System.out.println("集合coll1:"+coll1);
		
		Collection coll2 = new ArrayList();
		//add()添加一个元素
		coll2.add("元素2");
		coll2.add(1111);
		coll2.add(2222);
		coll2.add("def");		
		System.out.println("集合coll2:"+coll2);
		
		//contains()查询一个元素是否在集合中,返回布尔值
		System.out.println("abc是否在coll1中:"+coll1.contains("abc"));//true
		
		//remove()删除一个指定元素,若有重复元素删除其中一个,若没有此元素,无变化
		coll1.remove(1111);
		coll1.remove(1010);
		System.out.println("删除一个元素后的coll1:"+coll1);

		//addAll()将一个集合全部添加到另一个集合中去
		coll1.addAll(coll2);
		System.out.println("coll1中添加coll2后:"+coll1);
		
		//判断一个集合是否是另一个集合的子集,返回布尔值
		System.out.println("coll2是否是coll1的子集:"+coll1.containsAll(coll2));//true
		
		//removeAll()将两个集合中共有的元素全部删除,有些元素有重复的多个,只要交集中有相同元素,重复的元素都会被删除
		coll1.removeAll(coll2);
		System.out.println("移除交集后的coll1:"+coll1);
		
		//clear() 清除所有元素
		coll1.clear();
		System.out.println("清空后的集合:"+coll1);
		
		//isEmpty()判断一个集合是否是空集合,返回布尔值
		System.out.println("coll1是否是空集合:"+coll1.isEmpty());
	}
}

输出:

集合coll1:[元素1, 1111, 1111, abc]
集合coll2:[元素2, 1111, 2222, def]
abc是否在coll1中:true
删除一个元素后的coll1:[元素1, 1111, abc]
coll1中添加coll2后:[元素1, 1111, abc, 元素2, 1111, 2222, def]
coll2是否是coll1的子集:true
移除交集后的coll1:[元素1, abc]
清空后的集合:[]
coll1是否是空集合:true
1.2 迭代器
  • 关键字:Iterator

  • 作用是遍历数组

  • 迭代器的使用主要有以下三个方面的注意事项:

    1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素。

    2)使用Iterator()的hasNext()方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。

代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo {
	public static void main(String[] args) {
		method();
	}
	public static void method() {
		//创建一个集合
		Collection coll1 = new ArrayList();
		//添加一个元素
		coll1.add("元素1");
		coll1.add(11111);
		coll1.add("元素2");
		System.out.println("集合coll1:"+coll1);
		//iterator()迭代器,作用是遍历集合
		Iterator it = coll1.iterator();
		//遍历集合
		//需要先使用hasNext()判断是否有下一个元素
		while(it.hasNext()) {
			//使用next()来获取下一个元素
			System.out.println(it.next());
		}		
	}
}

输出:

集合coll1:[元素1, 11111, 元素2]
元素1
11111
元素2
  • 使用迭代器获取指定数据类型的元素,将上述迭代器代码更换为以下代码
//需要先判断是否有下一个元素
while(it.hasNext()) {
    //创建一个对象接收下一个元素
    Object obj = it.next();
    System.out.println(obj);
    //判断元素是否属于字符串,若是则输出
    if (obj instanceof String) {
        String str = (String)obj;
        System.out.println(str);
    }
}	

输出:

元素1
元素2
1.3 List 单列集合
  • List接口中允许重复、有序(输入输出顺序) 数组的数据结构(底层维护的是一个数组) 查询快、增删慢
  • 常见的子类
    • ArrayList
      • 使用的是数组数据结构,查询快,增删慢
    • LinkedList
      • 使用的是数组链表数据结构,增删快,查询慢

代码示例

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

public class ListDemo {
	public static void main(String[] args) {
		method();
		removeMethod();
	}
	/**
	 * List集合迭代器演示
	 */
	public static void method() {
		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(1);
		//获取迭代器
		ListIterator listIt = list.listIterator();
		//遍历 next()是指针从开始往后查询下一个元素
		while(listIt.hasNext()) {
			System.out.println(listIt.next());
		}
		System.out.println("-------");
		//在上一个迭代器结束后,指针指向了最后一个元素,所以可以开始逆向再遍历一次
		//逆序遍历
		//hasPrevious()确认指针前面上一个有元素
		while(listIt.hasPrevious()) {
			//previous()获取上一个元素
			System.out.println(listIt.previous());
		}
	}
	/**
	 * List集合根据下标增加和移除元素演示
	 */
	public static void changeMethod() {
		List list = new ArrayList();
		list.add("元素一");
		list.add("元素二");
		list.add("元素三");
		//删除指定下标位置元素
		list.remove(1);
		System.out.println(list);//[元素一, 元素三]
		//在指定下标位置添加元素
		list.add(1, "元素四");
		System.out.println(list);//[元素一, 元素四, 元素三]
		//get(int index)获取指定下标位置的元素
		System.out.println(list.get(1));//元素四
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值