API——集合

目录

1. 集合类概述

1.1 集合的由来

1.2 数组和集合的区别

1.3 集合的特点

2. Collection接口

2.1 概述

2.2 Collection的功能概述

2.3 Collection集合的遍历

2.4 Iterator接口

2.5 集合的使用步骤

3. List接口

3.1 概述

3.2 List案例(同Collection)

3.3 List的特有功能

3.4 List集合的特有遍历功能

3.5 ListIterator接口

3.6 常见的数据结构

3.7 List子类的特点

3.8 List子类的功能

3.8.1 ArrayList

3.8.2 Vector

3.8.3 LinedList

4. 泛型

4.1 概述

4.2 泛型的应用

4.3 泛型高级之通配符

5 Set接口

5.1 Set接口概述和特点

5.2 Set的子类

5.2.1 HashSet类概述

5.2.2 TreeSet类


1. 集合类概述

1.1 集合的由来

Java语言是面向对象的语言,对事物的描述是通过对象来体现的,为了方便对多个对象的操作,需要对对象进行储存,而用来存储对象的变量就需要是容器类型的变量。

目前所学的数组和StringBuffer都是容器类型的,但是StringBuffer的结果是字符串,不一定满足需求。而由于数组的长度是固定的,对象数组具有一定的局限性,所以Java提供了集合类。

针对不同的需求,Java提供了不同的集合类,这些集合类的数据结构(数据结构简单地说就是数据的存储方式)不同。通过不断向上提取集合类的共性内容(比如存储、获取、判断等),得到一个集合的继承体系结构图。

常用继承体系:

Collection

  • List
    • ArrayList
    • Vector
    • LinkedList
  • Set
    • HashSet
    • TreeSet

1.2 数组和集合的区别

  1. 长度区别
    1. 数组的长度不可变
    2. 集合的长度可变
  2. 内容不同
    1. 数组存储的是同一种类型的元素
    2. 集合可以存储不同类型的元素
  3. 元素的数据类型
    1. 数组既可以存储基本数据类型,又可以存储引用数据类型
    2. 集合只能存储引用数据类型

1.3 集合的特点

  1. 集合只用于存储对象
  2. 集合长度是可变的
  3. 集合可以存储不同类型的对象

2. Collection接口

2.1 概述

Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,也有无序的

2.2 Collection的功能概述

  1. 添加功能
    1. boolean add(Object obj):添加一个元素
    2. boolean addAll(Collection c):添加一个集合的元素
  2. 删除功能
    1. void clear():移除所有元素
    2. boolean remove(Object o):移除一个元素
    3. boolean removeAll(Collection c):移除一个集合中的元素
  3. 判断功能
    1. boolean contains (Object o):判断集合中是否包含指定元素
    2. boolean containAll(Collection c):判断集合中是否包含指定的集合元素
    3. boolean isEmpty():判断集合是否为空
  4. 获取功能
    1. Iterator<E> interator()
  5. 长度功能
    1. int size():元素的个数
  6. 交集功能
    1. boolean retainAll(Collection c):两个集合都有的元素
  7. 把集合转换为数组
    1. Object [] to Array()

案例1:基本成员方法案例演示

package cn.itcast_01;

import java.util.ArrayList;//导包快捷键Ctrl+shift+o
import java.util.Collection;

public class CollectionDemo {

	public static void main(String[] args) {
		// 创建对象
		// Collection c = new Collection();//错误,接口不能实例化
		Collection c = new ArrayList();// 通过子接口的实现类来实例化
		System.out.println("c:" + c);

		// boolean add(Object obj):添加一个元素
		// 返回boolean值,看源码发现无论添加什么元素,一直返回true
		System.out.println("add:" + c.add("hello"));
		// 添加元素world
		c.add("world");
		// 添加元素java
		c.add("java");
		// 输出集合c
		System.out.println("c:" + c);

		// void clear():移除所有元素
		// c.clear();//返回值为void,不能用println()
		// System.out.println("c:"+c);// c:[]

		// boolean remove(Object o):移除一个元素
		System.out.println("remove:" + c.remove("hello"));//true
		System.out.println("remove:" + c.remove("hi"));//false
		System.out.println("c:" + c);

		// boolean contains (Object o):判断集合中是否包含指定元素
		System.out.println("contains:" + c.contains("hello"));//false
		System.out.println("contains:" + c.contains("java"));//true
		System.out.println("c" + c);

		// boolean isEmpty():判断集合是否为空
		System.out.println("isEmpty:" + c.isEmpty());//false
		System.out.println("c" + c);
		
		//int size():元素的个数
		System.out.println("size:"+c.size());//2
		System.out.println("c" + c);
	}

}
输出:
c:[]
add:true
c:[hello, world, java]
remove:true
remove:false
c:[world, java]
contains:false
contains:true
c[world, java]
isEmpty:false
c[world, java]
size:2
c[world, java]

案例2:All操作的方法演示

  • boolean addAll(Collection c):添加一个集合的元素
package cn.itcast_01;

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

public class CollectionDemo2 {

	public static void main(String[] args) {
		// 创建集合1
		Collection c1 = new ArrayList();
		c1.add("abc1");
		c1.add("abc2");
		c1.add("abc3");
		c1.add("abc4");

		// 创建集合2
		Collection c2 = new ArrayList();
		c2.add("abc4");
		c2.add("abc5");
		c2.add("abc6");
		c2.add("abc7");

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

}
输出:
addAll:true
c1:[abc1, abc2, abc3, abc4, abc4, abc5, abc6, abc7]
c2:[abc4, abc5, abc6, abc7]
  • boolean removeAll(Collection c):移除一个集合中的元素(只要有一个元素被移除就返回true)
package cn.itcast_01;

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

public class CollectionDemo2 {

	public static void main(String[] args) {
		// 创建集合1
		Collection c1 = new ArrayList();
		c1.add("abc1");
		c1.add("abc2");
		c1.add("abc3");
		c1.add("abc4");

		// 创建集合2
		Collection c2 = new ArrayList();
		c2.add("abc4");
		c2.add("abc5");
		c2.add("abc6");
		c2.add("abc7");

                //boolean removeAll(Collection c):移除一个集合中的元素
		System.out.println("remove:"+c1.removeAll(c2));
		System.out.println("c1:" + c1);
		System.out.println("c2:" + c2);
	}

}
输出:
remove:true
c1:[abc1, abc2, abc3]
c2:[abc4, abc5, abc6, abc7]
  • boolean containAll(Collection c):判断集合中是否包含指定的集合元素(只有包含该集合中的全部元素时才返回true)
package cn.itcast_01;

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

public class CollectionDemo2 {

	public static void main(String[] args) {
		// 创建集合1
		Collection c1 = new ArrayList();
		c1.add("abc1");
		c1.add("abc2");
		c1.add("abc3");
		c1.add("abc4");

		// 创建集合2
		Collection c2 = new ArrayList();
		c2.add("abc4");
		c2.add("abc5");
		c2.add("abc6");
		c2.add("abc7");
		
		//创建集合3
		Collection c3 = new ArrayList();
		c3.add("abc4");

   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的Stream API来实现这个功能。具体实现方法如下: 1. 使用Stream的map方法将集合的对象转化成属性值的集合; 2. 使用Stream的distinct方法去重; 3. 使用Stream的count方法统计去重后的元素个数,如果为1则说明两个集合的对象某个属性值全部相等,否则不相等。 示例代码如下: ```java public static boolean isPropertyEqual(List<Object> list1, List<Object> list2, String propertyName) { // 将集合的对象转化成属性值的集合 List<Object> propertyList1 = list1.stream().map(obj -> { try { Field field = obj.getClass().getDeclaredField(propertyName); field.setAccessible(true); return field.get(obj); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); return null; } }).collect(Collectors.toList()); // 将集合的对象转化成属性值的集合 List<Object> propertyList2 = list2.stream().map(obj -> { try { Field field = obj.getClass().getDeclaredField(propertyName); field.setAccessible(true); return field.get(obj); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); return null; } }).collect(Collectors.toList()); // 去重 propertyList1 = propertyList1.stream().distinct().collect(Collectors.toList()); propertyList2 = propertyList2.stream().distinct().collect(Collectors.toList()); // 统计去重后的元素个数,如果为1则说明两个集合的对象某个属性值全部相等,否则不相等 return propertyList1.size() == 1 && propertyList2.size() == 1 && propertyList1.get(0).equals(propertyList2.get(0)); } ``` 其,list1和list2分别表示两个集合,propertyName表示要比较的属性名。返回值为一个布尔值,表示两个集合的对象某个属性值是否全部相等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值