Collection集合学习(一)———Set接口与具体实现
接口Collection:
Collection是Java的一个集合框架, 也是一个根接口。JDK中没有提供此接口的任何实现,但是提供了更具体的子接口Set和List接口的实现,所有的Collection实现类都是通过这些子接口间接实现了Collection。
Collection接口有两种构造方法,一种用于构造空的Collection,另一种是带有Collection类型单参数的构造方法。该接口常用的方法包括add(E e),addAll(Collection<?> e),clear(),contains(Object o),equals(Object o),isEmpty(),remove(Object o),size(),toArray(),iterator()等等。
常用子接口包括List,Set,Queue等。

一.Set接口:
一个不包含重复元素的Collection,并且最多包含一个null元素,Set中的元素是自动排序的,与添加顺序无关。
具体实现类包括TreeSet,HashSet,EnumSet,均不是线程安全的。
1.常用实现类HashSet和TreeSet
区别如下:
1)HashSet底层是通过哈希表实现的,而TreeSet是通过二叉树实现的。
2)TreeSet类是使用元素的自然顺序对元素进行排序,且同一个TreeSet内的元素类型必须一致 ; 如果TreeSet内的元素是类对象,则该类必需实现Comparable接口为该类定制排序方式并且具有toString方法,如下面代码所示。
HashSet根据哈希值来对元素进行排序。
3)HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的 ;具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复,但是同一个类的对象可以放入不同的实例 。
4)HashSet的性能比Treeset好,因为TreeSet需要额外的红黑树算法来维护集合元素的次序,只有当需要一个保持排序的Set时,才会用TreeSet。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet; public class Collection_try { public static void main(String[] args){ Set set=new HashSet();
set.add("2");
set.add("1");
set.add("3");
set.add("4");
Iterator i=set.iterator();
while(i.hasNext()){
System.out.println(i.next());
} System.out.println("-------------------------"); A a1=new A(11);
A a2=new A(12);
A a3=new A(13);
A a4=new A(10);
TreeSet set1=new TreeSet();
set1.add(a1);
set1.add(a2);
set1.add(a3);
set1.add(a4); Iterator i1=set1.iterator();
while(i1.hasNext()){
System.out.println(i1.next());
}
System.out.println(set1.size());
} } class A implements Comparable{ private int i; public int getI() {
return i;
} public void setI(int i) {
this.i = i;
} public A(int i){
this.i=i;
} public int compareTo(Object o) //写具体的比较方法
{
A s=(A)o;
if(s.getI()<this.i){
return 1;
}else{
return -1;
}
} public String toString(){
return i+":ok";
}
}
2.EnumSet
EnumSet 是一个与枚举类型一起使用的专用 Set 实现,Enumset中所有元素都必须来自单个Enum枚举类型(即必须是同类型,且该类型是Enum的子类),EnumSet的特点是速度方面要优与HashSet和TreeSet 。
如下代码为一个Enum和EnumSet的例子
package mars; import java.util.EnumSet; /**
* Created by zhangys on 17-7-21.
*/
public class Collection_EnumSet { public static void main(String [] args){
testTraversalEnum (); //枚举类型的遍历
testEnumSet(); //EnumSet的是一个哦你
} public static void testTraversalEnum (){
Color[] allColor = Color.values ();
for (Color color : allColor) {
System. out .println( " 当前颜色 name : " + color.name());
System. out .println( " 当前颜色 ordinal : " + color.ordinal());
System. out .println( " 当前颜色 value: " + color);
}
} private static void testEnumSet() {
EnumSet<Color> currEnumSet = EnumSet.allOf(Color.class);
for (Color aLightSetElement : currEnumSet) {
System. out .println( " 当前 EnumSet 中数据为: " + aLightSetElement);
}
System.out.println("--------------华丽丽的分割线---------------");
EnumSet<Color> arEnumSet = EnumSet.of(Color.RED,Color.BLACK,Color.BLUE);
for (Color aLightSetElement : arEnumSet) {
System. out .println( " 当前 EnumSet 中数据为: " + aLightSetElement);
}
} public enum Color{ RED(1),BLUE(2),BLACK(3),YELLOW(4),GREEN(5); int node; private Color(int node){ //构造方法,只能为私有
this.node = node;
} public String toString() {
return String.valueOf (node);
}
}
}
Collection集合学习(一)———Set接口与具体实现的更多相关文章
- ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢
<!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...
- Collection集合学习(二)———List接口与具体实现
二.List接口: 一个可以包含重复元素的Collection,List中的元素不会自动排序,元素顺序由添加时的顺序决定. 具体实现类包括Vector(线程安全的),ArrayList,LinkedL ...
- java学习笔记——Collection集合接口
NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...
- JavaSE中Collection集合框架学习笔记(1)——具有索引的List
前言:因为最近要重新找工作,Collection(集合)是面试中出现频率非常高的基础考察点,所以好好恶补了一番. 复习过程中深感之前的学习不系统,而且不能再像刚毕业那样死背面试题,例如:String是 ...
- JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue
前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...
- JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...
- 【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
两个月之前准备软考时,简单的从理论上总结了最经常使用的数据结构和算法,比方:线性表,链表,图.在进行java开发时,jdk为我们提供了一系列对应的类来实现主要的数据结构.jdk所提供的容器API位于j ...
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
首先,我们先看一下Collection集合的基本结构: 1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_4_Iterator接口介绍
collection集合中是没有索引的,不能使用普通的循环来便利它. 也是在util的包中 先判断集合中有没有元素 有元素就取出来,用next方法 使用接口来接受一个实现类,这就是多态
随机推荐
- android 编译环境 & 开发教程 【持续更新】
一. 优秀博文推荐 1.ubuntu 搭建 android源码编译环境 ubuntu14.04LTS android 源码编译环境的搭建 2.开源网站 2.android 开源 网站 2015最流行的 ...
- SQL Server 2008 R2 使用 PIVOT 错误
SQL Server 2008 R2 使用 PIVOT 错误! 'PIVOT' 附近有语法错误.您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能. 有关 ALTER DATABASE 的 ...
- 《利用Python进行数据分析》笔记---第2章--1880-2010年间全美婴儿姓名
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- nginx and node.js配合使用 helloworld
nginx是最好的反向代理服务器. Node.js是... 好吧 ,不介绍了,猛击这里 现在小介绍下怎么用nginx和node.js配合使用. 先写个helloworld.js var http = ...
- 2017《Java技术》预备作业01
2017<Java技术>预备作业 1.学习使用MarkDown 本学期的随笔都将使用MarkDown格式,要求熟练掌握MarkDown语法,学会如何使用标题,插入超链接,列表,插入图片,插 ...
- IT NEWS WebSite
1.http://stackoverflow.com/ 2.google news 订阅 3.(IOS/Android/Java/Html5/JavaScript..)weekly 4.http:// ...
- Filter学习(三)Filter(过滤器)常见应用
一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题: package com.web.filter; import java.io.IOE ...
- BZOJ4518 Sdoi2016 征途 【斜率优化DP】 *
BZOJ4518 Sdoi2016 征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m ...
- vb编写串口调试程序
sub是子模块,可以调用但是没有返回值,function是有返回值的. public sub 可以在其它form里调用,而private sub 只能在当前form里调用. vb里的if else , ...
- php mysql apache 的字符集
在使用中常常遇到utf-8和utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下utf8 和 UTF-8 有什么区别 “UTF-8”是标准写法,php在Windows下边 ...