J2SE第七章——集合框架(容器)

本文深入讲解Java集合框架的核心概念,包括Collection接口的功能及其主要实现类ArrayList的特点。文章详细介绍了如何使用Collection接口进行对象的添加、移除及遍历操作,并通过实例演示了这些方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1(1张图)1(1个类Collections)3()6(6个接口)

位于java.util包中

 

1. 由来:

         常量 变量 数组--char[] ={'h','e','l'}  -- String

                                     致命点:长度固定,类型固定

         由此给出了数组的改进----可变数组

 

         容器:只能存储对象  (基本类型不能存储到容器中-----可以转化成包装类对象存储)

 

Map

collection

2. 一张图

 

3.Collection   

存的是单个!!对象!!

         有序list:有序可以重复

         无序set: 无序不可以重复

 

  3.1 Collection 接口的方法

 

      接口,没法直接看到源代码,看实现类的源代码

 

3.1.1 collection 方法

 

3.1.1.1 添加  void add(Object element)

import java.util.*;

public class Test{
	public static void main(String[] args) {
		// 父变量指向子类对象
		Collection c = new ArrayList();
		c.add(123);  // 自动装箱
		c.add(true);  // 自动装箱
		c.add("Hello");

		System.out.println(c.size());  // 3
		System.out.println(c)  // [123,true,Hello]  
		// ArrayList 重写了toString()的返回值
	}
}

3.1.1.2 移除 boolean remove(Object element)

 ------ 有一种是否相同的比较 -------重写equals()

import java.util.*;

public class Test{
	public static void main(String[] args) {
		// 父变量指向子类对象
		Collection c = new ArrayList();
		c.add(123);  // 自动装箱
		c.add(true);  // 自动装箱
		c.add("Hello");
		c.add(new Person(101,"张三"));
		c.remove(123);
		c.remove(new Person(101,"张三"));

		System.out.println(c.size());  // 3
		System.out.println(c)  // [true,Hello, Person@....]
		// new Person(101,"张三")并没有移除掉~!!!!
		class Person {
		private int id;
		private String name;

		public Person(int id,String name) {
			this.id = id;
			this.name = name;
		}

		public boolean equals(Object obj) {
			if (obj instanceof Person) {
				Person p = (Person) obj;
				if (this.id == id) {
					return true;
				}
			}
			return false;
		}
	}				
}

3.1.1.3   是否包含  boolean contains(Object element) 

------- 有一种是否相同的比较-----重写equals()

import java.util.*;

public class Test{
	public static void main(String[] args) {
		// 父变量指向子类对象
		Collection c = new ArrayList();
		c.add(123);  // 自动装箱
		c.add(true);  // 自动装箱
		c.add("Hello");
		c.add(new Person(101,"张三"));
 		System.out.println(c.contains(123));  // true
		System.out.println(c.contains("hello"));  // true  
		System.out.println(c.contains(new Person(101,"张三")); flase
		//拿着我需要判断的对象和容器中的对象挨个比较,其实是equals()				
	}
}

3.1.1.4 遍历容器接口:Iterator iterator()

                             Iterator 接口定义了3个方法:

                             boolean hasNext()  判断游标当前位置的后面是否还有元素 返回true 否则返回false

                             Object next() 获取游标右侧的元素,游标再次右移

                             void remove()

 

                            Iterator对象的 remove方法是在迭代过程中删除元素的唯一安全的方法

 

                            iterator()方法,返回一个对象,而对象必定属于某个类,需要定义一个变量来指向它

                                     在的问题是:这个类 叫什么我们不知道,但我们知道这个类实现了Iterator 接口

                                     terator iter = c.iterator()  父变量指向子类对象

                                     把iter理解成一份指针/游标,最初指向容器第一个元素之前的位置

                                     也就是说iter 变量指向的对象重写了这三个方法

public class Test {
	public static void main(String[] args) {
							
		m2();
	}

	public static void m2() {
		Collection c = new ArrayList();
		c.add(123);
		c.add("hello");
		c.add(true);

		Iterator iter = c.iterator();
		while (iter.hasNest()) {
			Object obj = iter.next();
			System.out.println(obj);
		}
	}
				
	public static void m3() {
		Collection c = new ArrayList();
		c.add(123);
		c.add("hello");
		c.add(true);

		for (Iterator iterator=c.iterator();iterator.haxNext();) {
			Object obj = iterator.next();
			System.out.println(obj);
		}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值