文档章节

java.util.Collection学习 - 认识Collection接口

crowley
 crowley
发布于 2015/06/16 19:46
字数 1400
阅读 23
收藏 0
点赞 0
评论 0

Collection是java集合的超类(List,Set等)

注:以下是依据JDK 7 Collection接口来说明的。

public interface  Collection<E>  extends  Iterable <E>

有如下方法:

int size();
返回集合中元素的总数,如果集合的总数比Integer.MAX_VALUE大,则返回Integer.MAX_VALUE

boolean isEmpty();
集合中没有元素,则返回true

boolean contains(Object o);
集合中包含指定元素,则返回true, 具体的说,如果collection中就一个元素e, 就是比较o.equals(e)

我们可以重写o.equals()方法来定制化 o 和 e 是否相等。

package com.conlection;
import java.util.ArrayList;
import java.util.Collection;
/**
 * 
 * contains 方法例子
 * @author wangsy
 */
public class Collection1 {
	public static void main(String[] args) {
		test1();//return true
		test2();//return true
		test3();//return false
		test4();//return false
		test5();//return true
		test6();//return false
	}
	
	static void test1() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		
		System.out.println(collection.contains(2));
	}
	
	static void test2() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(null);
		collection.add(2);
		
		System.out.println(collection.contains(null));
	}
	
	static void test3() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		
		System.out.println(collection.contains(null));
	}
	
	static void test4() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "aa"));
		collection.add(new Apple("green", "bb"));
		
		Apple apple = new Apple("red", "aa");
		System.out.println(collection.contains(apple));
	}
	static void test5() {
		Collection<Apple> collection = new ArrayList<Apple>();
		Apple apple1 = new Apple("red", "aa");
		Apple apple2 = new Apple("green", "bb"); 
		collection.add(apple1);
		collection.add(apple2);
		
		System.out.println(collection.contains(apple1));
	}
	
	static void test6() {
		Collection<Apple> collection = new ArrayList<Apple>();
		Apple apple1 = new Apple("red", "aa");
		Apple apple2 = new Apple("green", "bb"); 
		collection.add(apple1);
		collection.add(apple2);
		
		System.out.println(collection.contains(null));
	}
	
	static class Apple {
		String color;
		String name;
		
		public Apple() {};
		
		public Apple(String color, String name) {
			this.color = color;
			this.name = name;
		}

		String getColor() {
			return color;
		}

		void setColor(String color) {
			this.color = color;
		}

		String getName() {
			return name;
		}

		void setName(String name) {
			this.name = name;
		}
		
		@Override
		public int hashCode() {
			return name.hashCode()*3 + color.hashCode();
		}
		
		@Override
		public boolean equals(Object obj) {
			if(this == obj) {
				return true;
			}
			if(obj == null) {
				return false;
			}
			
			if(this.getClass() != obj.getClass()) {
				return false;
			}
			Apple _obj = (Apple)obj;
			return name.equals(_obj.getName()) && color.equals(_obj.getColor());
		}
		
		@Override
		public String toString() {
			StringBuffer sb = new StringBuffer();
			sb.append("color:").append(color).append(" name:").append(name);
			return sb.toString();
		}
	}
}





Iterator<E> iterator();
返回当前集合的迭代器对象

Object[] toArray();

返回集合所有元素

package com.conlection;
import java.util.ArrayList;
import java.util.Collection;
/**
 * 
 * toArray 方法例子
 * @author wangsy
 */
public class Collection2 {
	public static void main(String[] args) {
		test1();
		test2();
		//test3();//java.lang.ArrayStoreException
		//test4();//java.lang.NullPointerException
		test5();
	}
	
	static void test1() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		
		for(Object obj : collection.toArray()) {
			System.out.println(obj);
			System.out.println(Integer.toString((int)obj));
		}
	}
	
	static void test2() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "name1"));
		collection.add(new Apple("red", "name2"));
		
		for(Object obj : collection.toArray()) {
			Apple _obj = (Apple)obj;
			System.out.println(_obj.toString());
		}
	}
	
	static void test3() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "name1"));
		collection.add(new Apple("red", "name2"));
		
		for(String obj : collection.toArray(new String[0])) {
			System.out.println(obj.toString());
		}
	}
	
	static void test4() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "name1"));
		collection.add(new Apple("red", "name2"));
		
		Apple[] apples = null;
		for(Apple obj : collection.toArray(apples)) {
			System.out.println(obj.toString());
		}
	}
	
	static void test5() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "name1"));
		collection.add(new Apple("red", "name2"));
		
		Apple[] apples = new Apple[0];
		for(Apple obj : collection.toArray(apples)) {
			System.out.println(obj.toString());
		}
	}
	
	
	
	static class Apple {
		String color;
		String name;
		
		public Apple() {};
		
		public Apple(String color, String name) {
			this.color = color;
			this.name = name;
		}

		String getColor() {
			return color;
		}

		void setColor(String color) {
			this.color = color;
		}

		String getName() {
			return name;
		}

		void setName(String name) {
			this.name = name;
		}
		
		@Override
		public int hashCode() {
			return name.hashCode()*3 + color.hashCode();
		}
		
		@Override
		public boolean equals(Object obj) {
			if(this == obj) {
				return true;
			}
			if(obj == null) {
				return false;
			}
			
			if(this.getClass() != obj.getClass()) {
				return false;
			}
			Apple _obj = (Apple)obj;
			return name.equals(_obj.getName()) && color.equals(_obj.getColor());
		}
		
		@Override
		public String toString() {
			StringBuffer sb = new StringBuffer();
			sb.append("color:").append(color).append(" name:").append(name);
			return sb.toString();
		}
	}
}





<T> T[] toArray(T[] a);
按照T返回对应泛型的所有元素

boolean add(E e);
新增新元素e

boolean remove(Object o);

移除一个和e.equals(o)的元素 e

package com.conlection;
import java.util.ArrayList;
import java.util.Collection;

/**
 * 
 * remove 方法例子
 * @author wangsy
 */
public class Collection3 {
	public static void main(String[] args) {
		//test1();
		//test2();
		test3();
	}
	
	static void test1() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		
		collection.remove(2);
		
		for(Object obj : collection.toArray()) {
			System.out.println(obj);
		}
	}
	static void test2() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		collection.add(2);
		collection.add(3);
		
		collection.remove(2);
		
		for(Object obj : collection.toArray()) {
			System.out.println(obj);
		}
	}
	
	static void test3() {
		Collection<Apple> collection = new ArrayList<Apple>();
		collection.add(new Apple("red", "name1"));
		collection.add(new Apple("red", "name2"));
		collection.add(new Apple("red", "name3"));
		collection.add(new Apple("red", "name3"));
		collection.add(new Apple("red", "name3"));
		
		collection.remove(new Apple("red", "name3"));
		
		for(Apple apple : collection.toArray(new Apple[0])) {
			System.out.println(apple.toString());
		}
	}
	
	static class Apple {
		String color;
		String name;
		
		public Apple() {};
		
		public Apple(String color, String name) {
			this.color = color;
			this.name = name;
		}

		String getColor() {
			return color;
		}

		void setColor(String color) {
			this.color = color;
		}

		String getName() {
			return name;
		}

		void setName(String name) {
			this.name = name;
		}
		
		@Override
		public int hashCode() {
			return name.hashCode()*3 + color.hashCode();
		}
		
		@Override
		public boolean equals(Object obj) {
			if(this == obj) {
				return true;
			}
			if(obj == null) {
				return false;
			}
			
			if(this.getClass() != obj.getClass()) {
				return false;
			}
			Apple _obj = (Apple)obj;
			return name.equals(_obj.getName()) && color.equals(_obj.getColor());
		}
		
		@Override
		public String toString() {
			StringBuffer sb = new StringBuffer();
			sb.append("color:").append(color).append(" name:").append(name);
			return sb.toString();
		}
	}
}





boolean containsAll(Collection<?> c);
如果c是当前collection的子集,返回true
package com.conlection;
import java.util.ArrayList;
import java.util.Collection;

/**
 * 
 * containsAll 方法例子
 * @author wangsy
 */
public class Collection4 {
	public static void main(String[] args) {
//		test1();
//		test2();
//		test3();
		test4();
	}
	
	static void test1() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		
		Collection<Integer> collection1 = new ArrayList<Integer>();
		collection1.add(1);
		
		System.out.println(collection.containsAll(collection1));
	}
	
	static void test2() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		
		Collection<Integer> collection1 = new ArrayList<Integer>();
		collection1.add(4);
		
		System.out.println(collection.containsAll(collection1));
	}
	
	static void test3() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		
		Collection<Integer> collection1 = new ArrayList<Integer>();
		collection1.add(2);
		collection1.add(3);
		
		System.out.println(collection.containsAll(collection1));
	}
	
	static void test4() {
		Collection<Integer> collection = new ArrayList<Integer>();
		collection.add(1);
		collection.add(2);
		collection.add(3);
		
		Collection<Integer> collection1 = new ArrayList<Integer>();
		collection1.add(2);
		collection1.add(3);
		collection1.add(4);
		
		System.out.println(collection.containsAll(collection1));
	}
	
	static class Apple {
		String color;
		String name;
		
		public Apple() {};
		
		public Apple(String color, String name) {
			this.color = color;
			this.name = name;
		}

		String getColor() {
			return color;
		}

		void setColor(String color) {
			this.color = color;
		}

		String getName() {
			return name;
		}

		void setName(String name) {
			this.name = name;
		}
		
		@Override
		public boolean equals(Object obj) {
			if(obj instanceof Apple) {
				Apple _obj = (Apple)obj;
				if(_obj == this) {
					return true;
				} else {
					if(name.equals(_obj.getName()) && color.equals(_obj.getColor())) {
						return true;
					} else 
						return false;
				}
			} else {
				return false;
			}
		}
		
		@Override
		public String toString() {
			StringBuffer sb = new StringBuffer();
			sb.append("color:").append(color).append(" name:").append(name);
			return sb.toString();
		}
	}
}




boolean addAll(Collection<? extends E> c);
把指定集合的所有元素add到当前集合中
The behavior of this operation is undefined if  the specified collection is modified while the operation is in progress.(This implies that the behavior of this call is undefined if the specified collection is this collection, and this collection is nonempty.) 没有验证过。未完待续

boolean removeAll(Collection<?> c);
在当前集合中删除子集c

boolean retainAll(Collection<?> c);
当前集合保留子集c,也就是删除除了子集c的其他元素

void clear();
清空所有元素,此操作后,集合清空

boolean equals(Object o);

int hashCode();

下一篇博文:java.util.Collection学习 - 浅谈ArrayList

© 著作权归作者所有

共有 人打赏支持
crowley
粉丝 0
博文 3
码字总数 1851
作品 0
朝阳
高级程序员
​比较Collection 和Collections的区别

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最...

itfanr
2014/11/24
0
0
Java中Collection和Collections的区别

1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是...

ke_ry
2016/08/29
0
0
Java for-each循环解惑

考虑下面这段遍历一个用户自定义的aggregator或collection类的代码,这段代码将会打印出什么,抛出异常还是编译器错误: package javaForEach; /** * Java Class to show how for-each loop ...

markGao
2014/04/25
0
0
collection和collections的区别

查阅API文档会发现, java.util.Collection 是一个集合接口,提供了对集合对象进行基本操作的通用接口方法,它是各种集合接口的父接口,list和set继承自Collection , java.util.Collection...

lCarrieLiul
06/29
0
0
java基础巩固笔记(4)-代理

java基础巩固笔记(4)-代理 标签: java [TOC] 代理 代理是实现AOP(Aspect oriented program,面向编程)的核心和关键技术。 概念 代理是一种设计模式,其目的是为其他对象提供一个代理以控制对...

brianway
2016/02/03
112
0
Collection 和 Map 遍历过程的区别

1:Collection 和 Map 都是Java体系为我们提供的强大集合工具,他们的遍历是最多的操作,那么他们有什么不同呢?请看如下代码 import java.util.ArrayList;import java.util.Collection;imp...

刘付kin
2016/12/07
4
0
Java集合 (Set)

java.util.Set接口是java.util.Collection 的一个子接口。它代表一系列不重复的对象元素。 Set 示例 一个简单的示例,看看set是如何工作的 // HashSet Set的其中一个实现类Set set = new Has...

Kevin-air
2014/01/06
0
0
Java集合 (List)

List的实现类 接口java.util.List是java.util.Collection接口的一个子接口,它代表一个有序的对象列表。 这个意味着你可以通过一个特定的顺序访问集合中的元素。并且你可以向List中添加重复的...

Kevin-air
2014/01/06
0
0
Java集合 (Queue)

java.util.Queue接口是java.util.Collection子接口。 它代表一个有序的对象列表,就像List一样,但是它的使用有略微的区别。 Queue被设计成从末端插入并且从头部删除的形式。 Queue的实现类 ...

Kevin-air
2014/01/08
0
0
Velocity入门指南——第七章 循环指令

Velocity模板支持各种集合类型的迭代。 Object[] Velocity包装数据对象到迭代对象中,可以将其当做固定长度的List,可以调用size()、isEmpty()和get(int)。 java.util.Collection Velocity将...

Leech
2015/12/04
2.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
4
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
175
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部