集合(一)Collection


集合:

1.集合的由来:
面向对象语言对事物的描述是通过对象体现出来的,如果要存储多个对象,不能使用基本的变量,而应该使用容器类型的变量,
 * 目前位置学习过哪些容器变量?数组,StringBuffer,但是StringBuffer始终返回的是一个字符串,可能不是我们想要的结果;
 数组的长度是固定的,不能满足长度变化的需求,
 * java就提供了----集合,满足长度变化的需求!

 ***********面试题:

 集合和数组的区别:
 1)长度的区别:
 数组:长度是固定的
 集合:长度是可变的
 2)内容的区别:
 数组储存的是同一类型的元素:举例:水杯中的水
 集合储存的是不同类型的元素,举例:杯子例加水加可乐
 3)存储数据类型的区别:
 数组可以储存基本数据类型,也可以储存引用数据类型
 集合只能存储引用数据类型

集合是可以存储多个元素的,但是有时候需求发生变化,给集合中存储元素,但是不能让元素重复,
或者让元素按照某种规则排序,需求不断地变化,java提供了多个集合类,
  每一个集合类数据结构不同,数据结构不同不重要的,重要的是能够存储东西,
  并且开发者还可使用这些东西,多个集合类他们的共性的功能,将共性的内容向上抽取
  ----------->集合继承体系图!
   数据结构:存储的数据的方式 
2.Collection:Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。
  一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
 JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现,而这里子接口中又有自己的子实现类!
 添加功能:
  boolean add(Object e):给集合中添加一个元素
  boolean addAll(Collection c):添加一个集合中的元素
  删除功能:
  void clear()移除此 集合 中的所有元素
  boolean remove(Object o):删除此集合中的指定的元素
  boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素
(思考:删除一个集合中所有元素才算删除还是删除一个算是删除)?//删除一个算是删除
  判断功能:
  boolean contains(Object o):判断是集合中是否包含指定的元素
  boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?)//包含所有算是包含
        boolean isEmpty():判断集合是否为空
  获取功能:
 Iterator iterator():迭代器
  交集功能
 boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?)
  
  获取集合中的元素数
  int size()



  面试题:

数组中有没有length(),String类中有没有length(),集合中有没有length()方法?
  数组中:length属性,
  String类中:有length()方法,获取字符串的长度
集合中没有length()方法,获取集合的元素的方法:size()

  数组中:length属性,
  String类中:有length()方法,获取字符串的长度
集合中没有length()方法,获取集合的元素的方法:size()

代码:
import java.util.ArrayList;
import java.util.Collection;


/**
 * boolean addAll(Collection c):添加一个集合中的元素
 * boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素
 (思考:删除一个集合中所有元素才算删除还是删除一个算是删除)?
 * boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?)
 * boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?)
 返回值类型boolean在这里表示的是A集合中的元素是否发生变化!
 * */
public class CollectionDemo {
public static void main(String[] args) {

//创建两个集合对象
Collection c1 = new ArrayList();

//给c1集合中添加元素
c1.add("abc1") ;
c1.add("abc2") ;
c1.add("abc3") ;
c1.add("abc4") ;

Collection  c2 = new ArrayList();

//给c2集合中添加元素
c2.add("abc1") ;
c2.add("abc2") ;
// c2.add("abc3") ;
// c2.add("abc4") ;
c2.add("abc5") ;
c2.add("abc6") ;
c2.add("abc7") ;
c2.add("abc8") ;

// boolean addAll(Collection c):添加一个集合中的元素
System.out.println("addAll:"+c1.addAll(c2));

// boolean removeAll(Collection c)移除一个集合中的元素 (删除那些也包含在指定 collection 中的所有元素(思考:删除一个集合中所有元素才算删除还是删除一个算是删除)?
//包含一个元素算是删除!
// System.out.println("removeAll:"+c1.removeAll(c2));

//boolean containsAll(Collection c):(思考:包含一个元素算是包含还是包含所有算是包含?):包含一个集合中的所有元素才算包含!
// System.out.println("containsAll:"+c1.containsAll(c2));

//boolean retainAll(Collection c):(A集合对B集合去交集,交集的元素去哪里?返回值boolean在这里表示什么意思?)
/**注意:
* 如果一个A集合对B集合取交集,那么交集的元素要存储A里面,返回值类型boolean在这里
* 表示的是A集合中的元素是否发生变化!
* */
// System.out.println("retainAll:"+c1.retainAll(c2));

System.out.println("c1:"+c1);
System.out.println("c2:"+c2);
}
3. 集合中的一个转换功能:
 Object[] toArray():将集合转换成数组,利用这个功能就可以完成集合对元素的遍历

 代码:
 import java.util.ArrayList;
import java.util.Collection;


public class CollectionDemo2 {
public static void main(String[] args) {
//创建集合对象
Collection c=new ArrayList();//抽象多态,Collection是抽象类不能直接实例化
//给集合中添加元素
c.add("Good");
c.add("Good");
c.add("Study");
//将集合转换成数组
Object[] objs=c.toArray();
//遍历数组
for(int x=0;x<objs.length;x++){
//需求:我要得到字符串的同时,还要得到字符串的长度
//length(),字符串中特有的功能:长度功能
//强制类型转换
String s=(String) objs[x];
System.out.println(s+","+s.length());
}
}
}
4. Iterator iterator():迭代器 集合中的专用迭代遍历方式
  Iterator接口:
           Object next()返回迭代的下一个元素,获取元素
          单独使用next()会报异常:java.util.NoSuchElementException:没有这样元素的异常!,现在元素已经获取到最后了
  boolean hasNext():如果有下一个可以迭代的元素,请进行获取,判断功能

将上面把集合转化成数组进行遍历的代码用迭代器改进
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class IteratorDemo {
public static void main(String[] args) {
//创建集合对象
Collection c=new ArrayList();
//给集合添加元素
c.add("Good");
c.add("Good");
c.add("Study");
//使用迭代器进行数组遍历
Iterator it=c.iterator();
//方式一:
//获取下一个元素
// Object obj=it.next();
// System.out.println(obj);
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());//出现异常
//java.util.NoSuchElementException:没有这样元素的异常!,现在元素已经获取到最后了
//方式二:
//优化改进,增加判断功能, boolean hasNext():如果有下一个可以迭代的元素,猜进行获取,判断功能
if(it.hasNext()){
System.out.println(it.next());
}
if(it.hasNext()){
System.out.println(it.next());
}
if(it.hasNext()){
System.out.println(it.next());
}
if(it.hasNext()){
System.out.println(it.next());
}
System.out.println(".................");
// 方式3
// 方式2 代码重复率高,使用while 循环
Iterator it2=c.iterator();
while(it2.hasNext()){
String s=(String) it2.next();
System.out.println(s+","+s.length());
}
}
}
5.练习
获取5个学生的信息并存储到数组中

public class Student {
    private String name;
    private int age;
public Student() {
super();

}
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 Student(String name, int age) {
super();
this.name = name;
this.age = age;

}
}
//测试类
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class IteratorTest {
public static void main(String[] args) {
//创建集合对象
Collection c=new ArrayList();
//创建Student对象
Student s1=new Student("小红",23);
Student s2=new Student("小方",22);
Student s3=new Student("小名",21);
Student s4=new Student("小军",27);
Student s5=new Student("小例",24);
//给集合添加元素
c.add(s1);
c.add(s2);
c.add(s3);
c.add(s4);
c.add(s5);
//使用迭代器遍历
Iterator it=c.iterator();
while(it.hasNext()){
Student s=(Student) it.next();
System.out.println(s.getName()+"---"+s.getAge());
}

}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值