java(20130802)Set:HashSet TreeSet、Map(接口):HashTable Hashmap、比较list set map
来源:互联网 发布:大屏幕控制软件 供应商 编辑:程序博客网 时间:2024/04/30 14:13
类 Collections:集合操作(collection接口下的集合)的工具类。
Set接口
父接口Collection
:一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个null 元素。
实现类:
HashSet TreeSet
HashSet
:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用一个null 元素
无序存放,根据散列码保存。
对象存放到集合中执行顺序:
首先hashcode(); 进行判,如果相等就euqals()方法,不等就将对象保存到集合中。
TreeSet:
使用元素的自然顺序对元素进行排序,或者根据创建 set时提供的Comparator 进行排序,具体取决于使用的构造方法。
对象有比较器:
内部比较器:类实现Comparable<Person>重写compareTo()方法
Eg:
publicclass Personimplements Comparable<Person> {
private String name;
privateintage;
private Stringschool;
public Person(String name,int age,String school) {
this.name = name;
this.age = age;
}
/**
* 根据age的升序排列
*/
@Override
publicint compareTo(Person o) {
System.out.println("compareTo:"+this.name+":"+(this.age-o.getAge())+":"+o.getName());
//return 0;//表示两个对象是同一个对象
returnthis.age-o.getAge();//表示两个对象
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
}
外部比较器:
Eg:
publicclass MyCompareimplements Comparator<Dog> {
/**
* 按age的升序排列
*/
@Override
publicint compare(Dog p1, Dog p2) {
System.out.println("out :compareTo:"+p1.getName()+":"+(p1.getAge()-p2.getAge())+":"+p2.getName());
return (p1.getAge()-p2.getAge());
}
}
publicclass Dog {
private Stringname;
privateintage;
public Dog(String name,int age) {
this.name = name;
this.age = age;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
}
publicstaticvoid main(String[] args) {
Set<Dog> ds = new TreeSet<Dog>(new MyCompare());
Dog d1 = new Dog("xiaohua", 9);
Dog d2 = new Dog("xiaohei", 8);
Dog d3 = new Dog("xiaobai", 7);
Dog d4 = new Dog("xiaohuauang", 6);
ds.add(d1);
ds.add(d2);
ds.add(d3);
ds.add(d4);
for(Dog d:ds){
System.out.println(d.getName()+":"+d.getAge());
}
}
Map(接口):
HashTable
Hashmap
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
HashTable:
Hashtable 一个键值对应集合,存入相同键后边存入元素会覆盖之前元素,它是一个线程安全且无序。不允许null键和null值。
HashMap:
HashMap一个键值对应集合,存入相同键后边存入元素会覆盖之前元素,它是一个非线程安全且无序。允许一个null键和多个null值。
比较list set map:
1. list set都是实现collection接口,map是一个根接口
2. list有序 set无序 map无序
3. list(arraylist,linkedlist,vector)可以存放重复元素
arraylist:顺序存储非线程安全的
linkedlist:双向链表非线程安全的
vector:顺序存储线程安全的
4. set(hashset,treeset)不能存放重复元素
hashset:先执行对象的hashcode方法,如果hashcode相等就执行equals方法,equals返回false存入,反之不存。Hashcode不相等就直接存入。
Treeset:需要内部比较器或者外部比较器
内部比较器:对象类型必须实现comparable接口实现compareto方法
外部比较器:自定义比较器:实现comparator接口实现compare方法
Set<Dog> ds = new TreeSet<Dog>(new 自定义比较器());
5. map(hashtable,hashmap):键值对应的
hashtable: 一个键值对应集合,存入相同键后边存入元素会覆盖之前元素,它是一个线程安全且无序。不允许null键和null值。
HashMap:一个键值对应集合,存入相同键后边存入元素会覆盖之前元素,它是一个非线程安全且无序。允许一个null键和多个null值。
- java(20130802)Set:HashSet TreeSet、Map(接口):HashTable Hashmap、比较list set map
- List、Map、Set、HashMap、HashSet、Hashtable
- Map HashMap HashTable Set HashSet
- Collect Set List HashSet ArrayList LinkedList TreeSet Map HashMap TreeMap
- Set、HashSet、TreeSet、Map、HashMap、TreeMap
- Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
- java中Collection/Collections;List/Set/Map;ArrayList/Vector/LinkedList;HashSet/HashMap/TreeSet/TreeMap
- hashtable,hashset,hashmap,set,map,multimap,multiset
- java数据结构(二)——Set(HashSet,TreeSet),泛型,Map(HashMap,TreeMap)
- java数据结构(二)——Set(HashSet,TreeSet),泛型,Map(HashMap,TreeMap,ConcurrentHashMap)
- Java集合框架(Set与Map,HashSet与HashMap,TreeSet与TreeMap)
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- java 集合类 map set list arraylist hashmap hashtable
- Java 集合类 map set list arraylist hashmap hashtable
- java集合: List、Set、Map总结 + HashMap/Hashtable 区别
- Java Collection: List、Set、 Map、 HashMap、 Hashtable、 Vector
- Java:Map与HashMap,Hashtable,HashSet比较
- Java:Map与HashMap,Hashtable,HashSet比较
- UML基础:统一建模语言简介
- STRUTS资料
- CreateProcessWithLogonW问题
- VC调用Flash
- c++中CreateEvent函数解析
- java(20130802)Set:HashSet TreeSet、Map(接口):HashTable Hashmap、比较list set map
- 非常有意思的几个算术、算法题
- JQuery Tutorial | AJAX Load
- linux内核编译时的错误
- SWF文件的混淆
- Android Java Framwork显示Toast(无Activity和Service
- Maven实战_Eclipse构建Maven项目
- ubuntu12.04开启Framebuffer
- 结合领域驱动设计的SOA分布式软件架构