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方法 使用接口来接受一个实现类,这就是多态
随机推荐
- Jmter操作数据库
1.导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql,如下操作: 2.创建数据库连接如下: 3.配置mysql的url.端口号.账号. ...
- MySQL安装部署及调优
MySQL安装 二进制安装 - mysql-5.5.49 mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ rz #mysql-5.5.49-lin ...
- matlab save 命令
有时候要运行很长才得到结果,而这部分结果在后面修改代码之后不需要改变.可以多次利用这些结果or参数,有必要将结果保存下来. 1 save example1 A ;%A为当前环境下的变量,example ...
- 基本SQL命令
1.SQL命令的使用规则 1.每条命令必须以 ; 结尾 2.SQL命令不区分字母大小写 3.使用 \c 来终止当前命令的执行 2.库的管理 1.库的基本操作 1.查看已有库 show database ...
- erl_0020 《面对软件错误构建可靠的分布式系统》读书笔记001 “面向并发COPL”
在现实世界中,顺序化的(sequential)活动非常罕见.当我们走在大街上的时候,如果只看到一件事情发生的话我们一定会感到不可思议,我们期望碰到许多同时进行的活动. 如果我们不能对同时发生的众多事件 ...
- BZOJ4556 Tjoi2016&Heoi2016 字符串【后缀自动机+倍增+线段树合并】
Description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了 一个长为n的字符串s,和m个问题.佳媛姐姐必须正确回答这m个问题,才能打开 ...
- C#中 this关键字 四种用法
/// <summary> /// 主程序入口 /// </summary> /// <param name="args"></param ...
- 《DSP using MATLAB》示例Example 8.25
- [Luogu4715]「英语」Z 语言
luogu description 你有一个长度为\(n\)的串\(A\)和一个长度为\(m\)的串\(B\),字符集大小\(2^{31}\),且同一个串中没有相同的元素. 定义\(B\)串与\(A_ ...
- Elixir's keyword lists as option parameters
备注: 文章转自:https://www.djm.org.uk/posts/writing-extensible-elixir-with-behaviours-adapters-pluggable-b ...