接口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接口与具体实现的更多相关文章

  1. ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢

    <!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...

  2. Collection集合学习(二)———List接口与具体实现

    二.List接口: 一个可以包含重复元素的Collection,List中的元素不会自动排序,元素顺序由添加时的顺序决定. 具体实现类包括Vector(线程安全的),ArrayList,LinkedL ...

  3. java学习笔记——Collection集合接口

    NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...

  4. JavaSE中Collection集合框架学习笔记(1)——具有索引的List

    前言:因为最近要重新找工作,Collection(集合)是面试中出现频率非常高的基础考察点,所以好好恶补了一番. 复习过程中深感之前的学习不系统,而且不能再像刚毕业那样死背面试题,例如:String是 ...

  5. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  6. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  7. 【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

    两个月之前准备软考时,简单的从理论上总结了最经常使用的数据结构和算法,比方:线性表,链表,图.在进行java开发时,jdk为我们提供了一系列对应的类来实现主要的数据结构.jdk所提供的容器API位于j ...

  8. Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

    首先,我们先看一下Collection集合的基本结构: 1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和 ...

  9. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_4_Iterator接口介绍

    collection集合中是没有索引的,不能使用普通的循环来便利它. 也是在util的包中 先判断集合中有没有元素 有元素就取出来,用next方法 使用接口来接受一个实现类,这就是多态

随机推荐

  1. mac 使用 pf 做端口转发

    Mac os中我发现直接输入localhost是拒绝访问的,原因在于OSX 对于1024内端口需要 root 权限,因此需要做一个80端口的转发. 曾经的 ipfw 已经被 pf 所替换. 首先我们要 ...

  2. HAWQ + MADlib 玩转数据挖掘之(五)——奇异值分解实现推荐算法

    一.奇异值分解简介 奇异值分解简称SVD(singular value decomposition),可以理解为:将一个比较复杂的矩阵用更小更简单的三个子矩阵的相乘来表示,这三个小矩阵描述了大矩阵重要 ...

  3. 更换pip源,解决pip install安装包慢的问题

    而pip是很强大的Python包安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以最好是将使用的pip源更换一下,这样就能解决被墙导致的装不上库的问题.网上有很多可用的源,例如豆瓣:http ...

  4. [Linux] 虚拟环境的配置和使用 virtualenv

    1.安装 sudo apt-get install python-virtualenv 2.使用 创建虚拟环境: virtualenv [虚拟环境名称] 例如: virtualenv env_test ...

  5. 8.另类方法求1+2+...+n[AnotherMethodOfCalculateSumN]

    [题目] 求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). [分析] 这道题没有多少实际意义,因为在软件开发中不 ...

  6. 数据结构(Data Structures)

    一.List数据类型的方法 定义两个list,a和b:a=[1,2,3,4],b=[7,8,9,10] a.append(x)            在a的末尾附加x元素 a.extend(b)   ...

  7. vps上搭建jupyter notebook远程服务

    安装anaconda 使用如下命令下载: wget https://repo.continuum.io/archive/Anaconda3-5.0.0.1-Linux-x86_64.sh 如果非roo ...

  8. Open Asset Import Library(assimp) vs2010编译

    Assimp(Open Asset Import Library)是一个开源的3D模型导入解析库, 可以处理很多种3D文件格式:Collada, Blend, Obj, X, 3DS, LWO, MD ...

  9. Appium+python (3) 元素定位(1)

    打开问价夹下面的uiautomatorviewer: 夜神模拟器里的App后,回到uiautomatorviewer: 点击左上角的Device Screenshot,这时你的夜神模拟器页面就会显示在 ...

  10. 网站使用QQ登录问题小结

    关于网站如何使用QQ登陆这个问题就不多说了,很简单,登陆connect.qq.com找到相应的SDK,下载下来,里面会有demo,将相应的appid,appkey和回调地址callback改成自己的就 ...