ArrayList 允许快速随机存取,相比于LinkedList不适合拿来进行元素安插和移除操作。
LinkedList 提供最佳循序存取,适合安插和移除元素,随机存取操作比ArrayList缓慢。
HashSet 只存放唯一值,是把搜寻时间看得很重要,用hash方式作set,故Access time complexity = O(1)
TreeSet 同上,但是存入的元素都会经过排序,所以速度比HashSet慢一点
LinkedHashSet 此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。
Set 无序的,不可以重复元素
|--HashSet: 底层数据结构是哈希表, 线程不同步
hashSet是如何保证元素唯一性呢?
是通过元素的两个方法, hashCode 和 equals 来完成的
如果元素的hashCode值相同,才会判断equals 是否为true
如果元素的hashCode值不同,不会调用 equals.
注意: 对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法.
|--TreeSet: 可以对Set集合中的元素进行排序
底层数据结构式是二叉树
compareTo 方法 return 0 TreeSet 中就只会有一个 元素
如果我们自己定义的一个类的对象要加入到TreeSet当中,那么这个类必须要实现Comparable接口。
/**
* testTreeSet1自然排序 testTreeSet2自定义排序
*/
public class TreeSetTest {
public static void main(String[] args) {
TreeSetTest tst = new TreeSetTest();
tst.testTreeSet1();
tst.testTreeSet2();
}
public void testTreeSet1() {
Set set1 = new TreeSet();
set1.add( new BigDecimal( "3")) ;
set1.add( new BigDecimal( "5")) ;
set1.add( new BigDecimal( "1")) ;
set1.add( new BigDecimal( "9")) ;
//会报错java. lang.String cannot be cast to java.math.BigDecimal
//set1.add("1");
for (Iterator it = set1.iterator(); it.hasNext();) {
System. out .println(it.next());
}
//output:1 3 5 9
}
public void testTreeSet2() {
Set set1 = new TreeSet();
set1.add( new Customer( "Tom", 20)) ;
set1.add( new Customer( "Petter" , 22));
set1.add( new Customer( "Mike" , 19));
set1.add( new Customer( "Tom", 21)) ;
for (Iterator it = set1.iterator(); it.hasNext();) {
System. out .println(it.next());
}
//output:
//Mike 19
//Petter 22
//Tom 20
//Tom 21
}
//注:要实现equals,hashCode方法
class Customer implements Comparable{
public String name ;
public int age ;
public Customer(String name, int age) {
this .name = name;
this .age = age;
}
@Override
public String toString() {
return this .name + " " + this .age ;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true ;
if (!(obj instanceof Customer)) return false ;
Customer other = (Customer)obj;
if (this .name .equals(other. name) && this .age == other.age ) {
return true ;
} else {
return false ;
}
}
@Override
public int hashCode() {
int result;
result = ( name == null ? 0 : name.hashCode());
result = 29 * result + age ;
return result;
}
@Override
public int compareTo(Object o) {
Customer other = (Customer)o;
//先按name属性排序(如果想按倒序排序,则将下面依次改成返回-1/1)
if (this .name .compareTo(other. name) > 0) return 1;
if (this .name .compareTo(other. name) < 0) return -1;
//再按age属性排序
if (this .age > other. age) return 1;
if (this .age < other. age) return -1;
return 0;
}
}
}
相关推荐
java 运用集的相关类(Set) java 运用集的相关类(Set) java 运用集的相关类(Set)
Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan"); User u2=new User(2, "lisan"); User u3=new User(3, "wangsan"); //放入到Set集合中 Set userset=new ...
Set5,Set14 Dataset 是基于非负邻域嵌入的低复杂度单图像超分辨率的数据集,该训练集被用于单幅图像超分辨率重构,即根据低分辨率图像重构出高分辨率图像以获取更多的细节信息。 这项技术已被广泛应用于 计算机...
介绍有关level set方法的基础与应用
资源中涵盖了具体的UDF,以及激活Fluent中Overset的方法,另外还提供了一个双桥面强迫振动的算例及完成后生成的动画,希望对相关研究方向的硕士生有所帮助。另外留下了我Q联系方式,有问题的可以请教。
注:本文章只列举 set 在 ACM 中的常见操作,如需了解更多有关 set 内容,请参考 C++官方文档 Set 的基本用法 头文件 #include 需要使用 std 命名空间 using namespace std; 作用 方法 说明 定义 set set s;...
Set:元素不可以重复,是无序。p508 Set接口中的方法和Collection一致。 |--HashSet: 内部数据结构是哈希表 ,是不同步的。 如何保证该集合的元素唯一性呢? 是通过对象的hashCode和equals方法来完成对象唯一性的...
xset命令是设置X-Window系统中的用户爱好的实用工具。 xset是上层应用程序,主要用于在X-Window启动之后,对X-Window进行一些设置...显示当前的xset相关信息: [root@linuxcool ~]# xset q 开启蜂鸣器和键盘按键声: [r
原生javascript实现css属性的set和get
数据挖掘之关联规则挖掘之SETM算法代码+测试用例+具体操作步骤 相关信息戳这http://blog.csdn.net/michealtx/article/details/7522791
Plants_Data_Set 数据进行数据挖掘,包括源代码和数据文件,有相关的运行说明。具备Anaconda即可。
放 用C语言实现的简单集合 集允许快速检查是否包含和排除 ...打印有关集合的统计信息 用法: # include " set.h " # include int main ( int argc, char ** argv) { SimpleSet set; set_init (&set);
《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)
Setv_pnProxy是一款可以自动创建ppoe、v_pn[支持协议p p t p/l2tp/sstp/ikev2]和设置IE代理IP的小工具仅使用cmd命令行、批处理、编程方式运行本程序时添加相关参数即可即时生效带设置返回值并且不弹出连接窗口。...
string, vector, set, 算法:快慢指针等 相关总结
Level set book.pdf 一本有关水平集的书
描述HFP相关AT命令集的标准GSM文档
有关三星公司生产的S3C44BOX的部分源代码英文版,有助于更好了解S3C44BOX。
在编写程序调用变量时,遇到未定义的变量时,会报错,这是就需要我们对变量先进行判断,再进行相关操作。 这里主要记录两个变量判断函数的使用:isset()与empty() 1、isset — 检测变量是否已设置并且非 NULL isset...
java有关集合方面的总结 一目了然 绝对经典