黑马程序员_集合之Collection接口

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流------

1.集合的概述
集合的由来:
		我们学习的java语言是面向对象的语言, 而面向对象的语言对事物的描述都是通过对象体现的,那么为了方便的操作多个对象
  我们应该将多个对象存储起来! 那么既然要存储多个对象,我们就需要使用一个容器类型的变量进行存储! 
  那么到目前为止我们都学过那些容器呢?  
  数组 : 不能满足我们变化的需求
 字符串缓冲区 : 字符串缓冲区返回的都是字符串
  数组 ,字符串缓冲区都不能满足我们的需求那么怎么办呢? 这个时候java就给我们提供集合!
 
 
 集合和数组的区别:
 		a: 长度的区别
  			数组的长度是固定的
  			集合的长度是可变的
  		b: 存储数据类型的区别
  			数组可以存储基本数据类型,也可以存储引用数据类型(对象数组)
  			集合只能存储引用数据类型
  		c: 内容区别
  			数组只能存储同一种数据类型的元素
  			集合可以存储不同种 数据类型的元素
  
  我们都知道,集合是用来存储多个元素的,那么即使是存储多个元素,有的时候我们的需求也是不同的,比如: 排序 . 针对不同的需求
 java就给我们提供了不同的集合,而这些集合的数据结构不同.而数据结构不同不重要,重要的是你都可以帮我们存储数据,而且我们
  还可以使用这些数据,由此可见这些集合类之间就存在共性的内容,有共性的内容的内容我们因该将其向上抽取,就形成了集合的继承体系
  
  数据结构:	存储数据的方式
  Collection:	Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。
  				一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
  				JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。
  Collection的功能概述:
  		a: 添加功能
  			boolean add(Object obj)	:			添加一个元素
  			boolean addAll(Collection c):		添加一个集合的元素
 		b: 删除功能
  			void clear():						移除此 collection 中的所有元素(可选操作)。
 			boolean remove(Object o):			删除一个元素
  			boolean removeAll(Collection c):	删除一个集合的元素,删除一个以上算是删除还是删除所有的算是删除?
  		c: 获取功能
  			Iterator iterator():		迭代器(重点)
  		d: 判断功能
  			boolean contains(Object o):			判断是否包含指定的元素
  			boolean containsAll(Collection c):	判断是否包含一个集合的元素,包含一个以上算是包含,还是包含所有的算是包含呢?
  			boolean isEmpty():					判断集合是否为空
  		e: 长度功能
  			int size():					获取集合的长度
  		f: 获取交集的功能
  			boolean retainAll(Collection c):	获取交集,获取到的交集元素去哪里了,返回的boolean类型的值表示神马意思?
  		g: 集合转数组的功能
  			Object[] toArray():
 
 注意 : 集合转数组的功能
 	 import java.util.ArrayList;
import java.util.Collection;

  //集合转数组的功能 : Object[] toArray():

Collection举例练习
public class CollectionTest {
	
	public static void main(String[] args) {
		
		// 创建集合对象
		Collection c = new ArrayList() ;
		
		// 添加元素
		c.add("hello");				
		c.add("world");
		c.add("java");
		
		// 首先将集合转换成数组,调用toArray方法
		Object[] objs = c.toArray() ;
		
		// 遍历数组
		for(int x = 0 ; x < objs.length ; x++){
			
			// 因为在Object中没有length()所以就报错了
			// System.out.println(objs[x].length());
			
			// 向下转型:多态的形式
			String s = (String)objs[x] ;
			
			// 输出
			System.out.println(s + "----" + s.length());
		}
		
	}

}

2迭代器:
迭代器:		Iterator iterator()
	Iterator遍历使用的两个方法:		
			boolean hasNext(): 判断是否存在元素
 			Object next():	获取元素,并将指针向后移动一位
 
 使用集合存储自定义对象,使用迭代器进行遍历
  
  分析:
  		a: 定义一个类	(Person)
  		b: 创建集合对象
 		c: 创建自定义对象
  		d: 向集合中添加自定义对象(元素)
 		e: 遍历
 			(1): 获取迭代器对象
 			(2): 使用迭代器遍历

练习:
 (1)使用集合存储字符串并使用迭代器进行遍历
class CollectionTest01{
 
 	public static void main(String[] args){
 	
		//创建集合对象
		Collection c = new ArrayList();
		 
		//向集合中添加元素
		 c.add("hello");
		 c.add("world");
		 c.add("java");
		 
		 //创建迭代器对象
		  Iterator it = c.iterator();
 		  
 		  //遍历
		  while(it.hasNext()){
	 		  
	 		  //向下转型
	 		  String str = (String)it.next();
	 		  
	 		  //输出
	 		  System.out.println(str);
		  }
 	}
 }
 

(2)使用集合存储自定义学生类并使用迭代器进行遍历
//创建学生类
 public class Student {
	
	private String name ;
	
	private int age ;

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

 //测试类

public class CollectionTest02 {

	public static void main(String[] args){
	
		//创建集合对象
		Collection c = new ArrayList();
		
		//创建学生对象
		Student s1 = new Student("小强" , 24);
		Student s2 = new Student("小迪" , 21);

		//添加元素
		c.add(s1); 
		c.add(s2); 
		
		//创建迭代器对象
		Iterator it = c.iterator();
	
		//使用循环
		while(it.hasNext()){
		
			//向下转型
			Student s = (Student)it.next();
			
			//输出
			System.out.println(s.getName() + "----" + s.getAge());
		}
	}
}

3 List集合的特点以及遍历方式:
List是Collection的一个子接口, 在该接口中元素是有序(存储和取出的顺序)的,并且元素可以重复 .
 
 List集合遍历方式
 (1)使用List存储自定义对象,然后使用迭代器进行遍历
	分析:
 		(1): 自定义一个类
 		(2): 创建集合对象
 		(3): 创建自定义对象
 		(4): 把自定义对象添加到集合中
 		(5): 使用 迭代器进行遍历
 			  a: 获取迭代器
 			  b: 遍历	

 //遍历举例同上,只是创建集合对象将Collection改为List
 
 (2)List集合特有的遍历方式: 使用get方法以及size方法来完成
代码实现为:
class ListTest{
 
 	public static void main(String[] args){
 	
 		//创建List集合对象
 		List list = new ArrayList();
 		
 		//添加元素
 		list.add("hello");
 		list.add("world");
 		list.add("java");
 		
 		//遍历
 		for(int i = 0 ; i < list.size() ; i++){
 			
 			//向下转型
 			String result = (String)list.get(i);
 			
 			//输出
 			System.out.println(result);
 		}
 		
 		//使用List特有的迭代器遍历 :ListIterator
	
		// ListIterator
    
    
     
      listIterator()
		ListIterator it = list.listIterator() ;
		
		// 遍历
		while(it.hasNext()){
			System.out.println(it.next());
		}
 	}
 }
 
 
    
    

4 集合中元素的修改方法
集合中元素的修改:
 迭代器是依赖于集合存在的.	在获取迭代器的时候之前已经添加过元素了,而在遍历的时候,使用的迭代器进行遍历.
 	而往集合中添加元素的时候,使用的集合在添加元素,这时候迭代器不知道其修改了集合.
  	一句话: 迭代器在遍历集合的时候使用集合来修改元素
  	
  处理方案:
  		a:  迭代器在遍历的时候使用 迭代器修改元素
  		b:  集合自身遍历的时候,只能使用集合修改元素

5 list集合3个子类的特点
list集合3个子类的特点:
 ArrayList
	底层是靠数组实现的:	查询快, 增删慢
	线程不安全 , 效率高
Vector
	底层是靠数组实现的:	查询快, 增删慢
	线程安全 ,效率低
LinkedList
	底层是靠链表实现的:	查询慢, 增删快
	线程不安全 , 效率高

在以后的开发中到底使用哪个集合呢?
	看需求
	
	要安全吗?
		要:	Vector
		不要: LinkedList 或者 ArrayList
			查询多还是增删多呢?
				查询多:	ArrayList
				增删多:	LinkedList

如果不明白,就使用ArrayList

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值