Collection集合

一、集合的概述

集合是lava中存储对象数据的一种容器。

1)集合特点

①集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。集合更像气球。
②集合非常适合做元素的增删操作
注:集合中只能存储引用类型数据.如果要存储基本类型数据可以选用包装类

2)集合适合的场景

数据的个数不确定,需要进行增刚元素的时候。

集合类体系结构
Collection 单列 张三 王五 李四
Map双列 张三 北京
李四 上海
①Collection单列集合,每个元素(数据)只包含一个值
②Map双列集合,每个元素包含两个值(键值对)

二、Collection集合的体系特点

1)Collectio集合体系

                                           Collection                                                                          接口
            List                                                                          Set                                    实现类

ArrayList LinkedList HashSet TreeSet
LinkedHashSet

2)Collection集合特点

①List系列集合:添加的元素 有序 可重复 有索引
ArrayList LinkedList :有序,可重复 ,有索引
②Set系列集合:添加的元素是无序,不重复,无索引
HashSet:无序,不重复、无索引
LinkedHashSet:有序,不重复,无索引
Treeset:按照大小默认升序排序,不重复,无索引
集合对于泛型的支持
集合都是支持泛型的,可以在编泽阶段约束集合
只能操作某种数据类型
Collection < String> list= new ArrayList<>();
JDK1.7开始后面的泛型类型申明可以省略不写

三、Collection集合常用API

1、 Collection集合

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

2、Collection API如下:

  1. public boolean add (E e)
    把给定的对象添加到当前集合中
  2. public void clear ()
    清空集合中所有的元素
  3. public boolean remove(E e)
    把给定的对象在当前集合中删除
    (如果多个重复元素默认删除前面的第一个!)
    4)public boolean contains (Object obj)
    判断当前集合中是否包含给定的对象
  4. public boolean isEmpty ()
    判断当前集合是否为空
    6)public int size()
    返回集合中元素的个数
    7)public Object[] toArray()
    把集合中的元素,存储到数组中

package d2_collection_api;

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

public class CollectionDemo2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub

// HashSet:添加的元素是无序 , 不重复 ,无索引
Collection list=new ArrayList<>();
//1、添加元素,添加成功返回true
list.add(“java”);
list.add(“哈哈哈”);
list.add(“哈哈哈”);
list.add(“java”);
list.add(“呵呵呵”);
System.out.println(list);

	//2、清空集合的元素

// list.clear();
// System.out.println(list);

	//3、判断集合是否为空  是空返回true,反之,返回false
	System.out.println(list.isEmpty());
	
	//4、获取集合的大小
	System.out.println(list.size());
	
	//5、判断集合中是否包含某个元素
	System.out.println(list.contains("Java"));//false
	System.out.println(list.contains("java"));//true
	System.out.println(list.contains("呵呵呵"));//true
	
	//6、删除某个元素:如果有多个重复的元素默认删除前面的第一个
	System.out.println(list.remove("Java"));//false
	list.remove("java");
	System.out.println(list);
	
	//7、把集合转化成数组
	Object[] arr=list.toArray();
	System.out.println("数组:"+Arrays.toString(arr));
	
	System.out.println("-----------拓展-------------");
	Collection<String> c1=new ArrayList<>();
	c1.add("java1");
	c1.add("java2");
	Collection<String> c2=new ArrayList<>();
	c2.add("张三");
	c2.add("李四");
	//addAll把c2集合的元素全部倒入到c1中去
	c1.addAll(c2);
	System.out.println(c1);
	System.out.println(c2);


	}

}

四、Collection集合的遍历方式

方式一:选代器

1)迭代器遍历概述
①遍历就是一个一个的把容器中的元素访问一遍
②选代器在Java中的代表是Iterator,选代器是集合的专用遍历方式
2)Collection集合获取选代器
Iterator iterator()
返回集合中的送代器对象,该迭代器对象默认指向当前集合的0索引
3)Iterator的常用方法
<1> boolean hasNext()
询问当前位置是否有元素存在,存在返回true
② E next()
获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界。

package d3_collection_traversal;

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

public class CollectionDemo1 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Collection<String> list=new ArrayList<>();
	list.add("赵敏");
	list.add("小赵");
	list.add("苏苏");
	list.add("灭绝");
	System.out.println(list);//[赵敏,小赵,苏苏,灭绝]
	
	//1、得到当前集合的迭代器对象
	Iterator<String> it=list.iterator();

// String ele=it.next();
// System.out.println(ele);
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());//NoSuchElementException 出现无此元素异常的错误
while(it.hasNext()) {
String ele=it.next();
System.out.println(ele);
}

}

}

方式二:foreach/增强for循环

1)增强for循环:<1>既可以遍历集合也可以遍历数组
<2>它是JDK5之后出现的,其内部原理是一个Iterator 迭代器,遍历集合相当于是迭代器的简化法。
<3>实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了 Iterable接口。
格式:for(元素数据类型变量名:数组或Collection集合){
//在此使用变量即可,该变量就是元素
}

package d3_collection_traversal;

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

public class CollectionDemo2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Collection<String> list=new ArrayList<>();
	list.add("赵敏");
	list.add("小赵");
	list.add("苏苏");
	list.add("灭绝");
	
	for(String ele:list) {
		System.out.println(ele);
	}//赵敏
	 //小赵
	 //苏苏
	 //灭绝
	System.out.println("---------------------------");
	double[] scores= {100,999.5,59.5};
	for(double score:scores) {
		System.out.println(score);

// if(score==59.5) {
// score=90.0;//修改无意义,不会影响数组的元素值。
// }
}
System.out.println(Arrays.toString(scores));//[100,999.5,59.5]

}

}

方式三:Lambda表达式

package d3_collection_traversal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class CollectionDemo3 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Collection<String> list=new ArrayList<>();
	list.add("赵敏");
	list.add("小赵");
	list.add("苏苏");
	list.add("灭绝");
	System.out.println(list);

// list.forEach(new Consumer() {
//
// @Override
// public void accept(String t) {
// // TODO Auto-generated method stub
// System.out.println(t);
// }
// });
//
// list.forEach(t->{
// System.out.println(t);
// });

// list.forEach(t->System.out.println(t));

	list.forEach(System.out::println);

}

}

五、Collection 集合存储自定义类型的对象

1、集合中存储的是元素的什么信息?

集合中存储的是元素对象的地址

若不想要看见的是地址,在它的类中重写toSting方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值