java中Collection和List的常用方法(待补充)

List和Collection都是接口,不能直接创建对象,只能通过实现该接口的子类来创建对象

java.util

集合:即一个储存或者获取数据的容器。一般分为:List,Set,Map三类,关系如图所示:
在这里插入图片描述
在这里插入图片描述

List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来。

Java的Collection集合的常用方法

方法名说明
boolean add(E e)向集合添加元素e,若指定集合元素改变了则返回true
boolean addAll(Collection<? extends E> c)把集合C中的元素全部添加到集合中
void clear())清空所有集合元素
boolean contains(Object o)判断指定集合是否包含对象o
boolean containsAll(Collection<?> c)判断指定集合是否包含集合c的所有元素 ,如果包含则返回true,否则返回false
boolean isEmpty()检查Collection集合是否包含有元素,如果没有包含元素,则返回true,否则返回false,即判断指定集合的元素size是否为0
boolean remove(Object o)删除集合中的元素对象o,若集合有多个o元素,则只会删除第一个元素
boolean removeAll(Collection<?> c)删除指定集合包含集合c的元素
int size()集合的元素个数
T[] toArray(T[] a)将集合转换为T类型的数组
boolean equals(Object o)比较此collection集合与指定对象是否相等,是比较的是里面元素是否相等,而不是比较地址是否相等
int hashCode()返回此Collection集合的哈希码值。
Iterator iterator()返回在此collection集合的元素上进行迭代的迭代器

注:
1.isEmpty()与contains()的区别是,isEmpty()是判断集合是否包含有元素,就是说,如果一个元素都没有的话就返回true,如果有一个或者以上就返回false。
contains的方法是判断集合中是否包含特定的元素,如果包含特定的元素就返回true,如果没有包含特定元素就返回false。
2.在Object类中,equals()方法底层就是“==”,也就是说就是比较地址是否相等,但是继承后,大多数的类都重写了该方法
3.Collection<? extends E>解释:
1).实现了Collection接口
2).类型一定是E的子类
4.使用迭代器过程中不能用集合里的添加、删除等方法修改集合,不然会报错。如果想在迭代过程中还想操作集合,那么只能用迭代器类里面的方法。

创建:Collection<元素类型> c1 = new Vector();

主要方法演示:

package testC;
//Collection接口的几个基本函数

import java.util.*;

public class demo1 {
	@SuppressWarnings("unchecked")
	public static void main(String args[]) {
		//1.创建对象,Collection是借口,只能通过实现它的子类来创建对象
		Collection c1 = new Vector();
		Collection c2 = new Vector();
		
		c1.add("demo1");c1.add("demo2");
		c2.addAll(c1);
		System.out.println("c1执行两次add操作:"+c1);
		System.out.println("c2执行addAll(c1)操作"+c2);
		System.out.println("c1的元素个数为:"+c1.size()+"  "+"c2的元素个数为:"+c2.size());
		
		//集合操作
		c1.add("demo3");
		c2.add("demo4");
		System.out.println("c1当前为:"+c1+"\n"+"c2当前为:"+c2);
		
		//c1是否包含c2的
		boolean b=c1.containsAll(c2);
		System.out.println("c1包含c2:"+b );
		
		//c1∩c2的交集
		c1.retainAll(c2);
		System.out.println("c1∩c2:"+c1 );
		c1.add("demo3");//还原c1,为了执行下一个操作
		
		//c1-c2(在c1里不在c2里)
		c1.removeAll(c2);
		System.out.println("c1-c2:"+c1 );
		c1.add("demo1");c1.add("demo2");//还原c1,为了执行下一个操作
		
		//c1∪c2
		c1.addAll(c2);
		//使用set不包含重复元素去重
		Set s=new HashSet(c1);
		System.out.println("c1∪c2:"+s );
		
		//遍历集合 ,并删除指定元素
		System.out.println("当前c1为:"+c1);
		Iterator iterator = c1.iterator();
		while(iterator.hasNext()) {
			Object o=iterator.next();
			if(o.equals("demo1"))
			   iterator.remove();
			//System.out.print("当前元素为:"+o);
		}
		System.out.println("遍历后的c1为:"+c1);
		
		//转换成字符串数组
		Object[] o=c1.toArray();//toArray()返回的是Object[]类型
		System.out.print("c1转成数组为:");
		for(int i=0;i<o.length;i++)
		    System.out.print(o[i]+" ");
		
	}

}

执行结果:

c1执行两次add操作:[demo1, demo2]
c2执行addAll(c1)操作[demo1, demo2]
c1的元素个数为:2 c2的元素个数为:2
c1当前为:[demo1, demo2, demo3]
c2当前为:[demo1, demo2, demo4]
c1包含c2:false
c1∩c2:[demo1, demo2]
c1-c2:[demo3]
c1∪c2:[demo3, demo4, demo1, demo2]
当前c1为:[demo3, demo1, demo2, demo1, demo2, demo4]
遍历后的c1为:[demo3, demo2, demo2, demo4]
c1转成数组为:demo3 demo2 demo2 demo4

Java中List集合的常用方法

创建 List list=new ArrayList();

方法名说明
void add(int index, E element)在指定位置插入元素,后面的元素都往后移一个元素(即element出现在index位置)
boolean addAll(int index, Collection<? extends E> c)在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false,即只要集合c不空均返回true
E get(int index)返回list集合中指定索引位置的元素
int indexOf(Object o)返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1
ListIterator listIterator()返回此列表元素的列表迭代器(按适当顺序)
ListIterator listIterator(int index)从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)
E remove(int index)删除指定索引的对象
E set(int index, E element)在索引为index位置的元素更改为element元素
List subList(int fromIndex, int toIndex)返回从索引fromIndex到toIndex的元素集合,包左不包右

注:listIterator和iterator的区别
当只需要遍历集合时,两个迭代器的功能都是一样。但是listIterator迭代器只能用于List和他的实现子类,iterator迭代器可以用于所有的集合使用。所不同的就是listIterator迭代器的功能会比iterator迭代器的功能要多。listIterator迭代器可以在遍历集合时添加、修改和删除,而iterator迭代器在遍历集合时只有删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值