学习笔记分享---集合

集合

1. 概念: 存储多个不同引用数据类型的数据,可变长度,同时定义很多操作方法。

2. 集合和数组
   1.数组长度固定,集合长度不固定、
   2.数组可以存基本数据类型和引用数据类型数据
   3. 集合只存储引用数据类型数据

3. 不同的业务,使用不同类型的集合存储数据
在这里插入图片描述
4. Colletion接口
  两个子接口   List   Set
  提供一些方法,集合中添加、删除元素等等的操作

5. List接口
  存储一组不唯一有序的对象数据

   List   接口有两个实现类   ArrayList   LinkedList

    ArrayList是一个用数组实现的集合、非线程安全、动态数组的数据结构 (下标 ) 适用于遍历数据

    LinkedList是一个双向链表、非同步(如果多个线程同时访问一个List,必须实现访问同步)、基于双向链表的数据结构 适用于插入删除

6. 创建ArrayList集合

	ArrayList stus=new ArrayList();
	List stus2=new ArrayList();
	List<Integer> nums=new ArrayList<>();//使用泛型方式

添加元素

	Student stu1=new Student("1001","小红","女");
	Student stu2=new Student("1002","小明","男");
	Student stu3=new Student("1003","小丽","女");
		//创建集合
	ArrayList stus=new ArrayList();
	List stus2=new ArrayList();
	List<Integer> nums=new ArrayList<>();//使用泛型方式
		//添加元素
	nums.add(12);
	nums.add(23);
	nums.add(44);
	nums.add(2);
		//nums.add("dd");//The method add(Integer) in the type List<Integer> is
	not applicable for the arguments (String)
		//存储不同的引用数据类型
	stus2.add(12);
	stus2.add(7.8);
	stus2.add("你好");
	stus2.add(stu3);

集合中方法

	//元素个数
		System.out.println(stus.size());
	//集合元素是否为null遍历集合
		删除集合中元素出现问题
	使用for-each循环遍历集合,遍历过程中对集合进行删除操作,因此出现异常
	java.util.ConcurrentModificationException
	解决问题
	使用迭代器方式
		System.out.println(stus.isEmpty());
	//获取集合中元素
		System.out.println(stus.get(0));
	//删除集合中元素
		Student student=stus.remove(0);//删除第一个位置,返回删除元素的内容
		System.out.println(student);//Student [stuNo=1001, stuName=小红, sex=女]
		boolean sign=stus.remove(stu2);//删除某一个对象,返回是否删除成功
		System.out.println(sign);//true

遍历集合

	//下标
		for (int i = 0; i < stus.size(); i++) {
				System.out.println(stus.get(i));
	}
	//for-each
		for (Student s : stus) {
				System.out.println(s);
	}
	//清空集合中所有元素
		stus.clear();
	//修改集合中的元素
		stus.set(1, stu1);//java.lang.IndexOutOfBoundsException: 	Index: 1, Size: 1
	//根据位置进行更改集合元素
	//stus.set(0, stu1);
	//截取集合
		List<Student> newList=stus.subList(1,2);

除集合中元素出现问题
     使用for-each循环遍历集合,遍历过程中对集合进行删除操作,因此出现异常
 java.util.ConcurrentModificationException

解决问题
 使用迭代器方式

//使用迭代器方式
	Iterator<String> its=list.iterator();
		while(its.hasNext()){//hasNext 判断下一位是否有元素
			String str=its.next();//next() 获取当前元素
		if(str.equals("elice")){
			its.remove();
	}
}

7. LinkedList

	Student stu1=new Student("1001","小红","女");
	Student stu2=new Student("1002","小明","男");
	Student stu3=new Student("1003","小丽","女");
	LinkedList<Student> stus=new LinkedList<>();
		stus.add(stu1);
		stus.add(stu2);
		stus.add(stu3);
	for (int i = 0; i < stus.size(); i++) {
			System.out.println(stus.get(i));
	}
			System.out.println("-------------------------");
//stus.addFirst(stu3);//在集合第一个位置上添加元素
//stus.addLast(stu1);//在集合最后一个位置上添加元素
//stus.removeFirst();//删除集合中第一个位置元素
		System.out.println("第一位上元素"+stus.getFirst());
		System.out.println("最后一位上元素"+stus.getLast());
	for (Student student : stus) {
			System.out.println(student);
}

模拟堆栈

	LinkedList<String> list=new LinkedList<>();//构建空栈
// list.push("A");//使用堆栈的方式存入集合中
// list.push("B");
// list.push("C");
//
// for (String string : list) {
// System.out.print(string+"\t");//C B A
// }
	list.add("A");//使用队列的方式存入集合中
	list.add("B");
	list.add("C");
		for (String string : list) {
				System.out.print(string+"\t");//A B C
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值