关于JAVA集合类的一点总结!

 
JAVA 集合框架
 * Collection     * Map
     * Collections
 * 自然排序      * 客户排序
 
一. Collection 接口
它包括 List,Set 接口
 
1.      List 接口
特点:
它是一种线性的,按照索引在排序的序列,它允许元素重复和允许按照索引来查找元素。
 
子类:
ArrayList : 采用数组数据结构,相当于一个可改变容量大小的数组 (Array) ,查找元素速度快
LinkedList : 由于采用链式表的结构,所以插入和删除元素很方便
Vector: ArrayLis t 相似,只是所有方法是同步的
 
2.      Set 接口
特点:
它不可以按照顺序排列,是把 HashCode 为索引贮存一个数组中,它的元素不可以有重复的,但是它的子类有的可以按照特定顺序排列。当一个元素被加入时,会计算它的哈希码值,然后按照这个来计算它应该放在哪个位置。
 
采用 equals 来判断对象是否相等,而不是 ”==” .
 
子类:
HashSet : 它利用哈希算法来存贮元素,存取速度很快,它还有个子类 LinkedHashSet, 它更是实现了链表结构。
TreeSet : 它实现了 SortedSet 接口,具有排序功能。
 
 
二. Map 接口
特点:
它的每一个元素中都是一个 (Key,Value) 类型的对象,可以通过它的键来查找相应的值,它的键值不允许有重复,但是值却可以重复。
可以分别取出所有的键 (Key) ----keySet(), (Value)---values(), 然而不同的是前者得到的是一个 Set , 后者则是 Collection.
 
 
子类:
HashMap: 由于它实现了哈希算法,所以存取键对象都很方便。 HashSet 一样 , 要求当两个键对象通过 equals() 方法比较为 true , 这两个键对象的 hashCode() 方法返回的哈希码也一样 .
它允许元素为键为 Null, 值为 Null ,默认储存键值的数组长度为 16 (2 的指数 )
 
TreeMap: TreeSet 一样实现了 SortedMap 接口,所以它可以实现排序功能。并支持自然排序和客户排序两种方式。
 
HashTable: 它的方法和 Vector 一样都是线程安全的 , 它不允许元素为 null, 迭代元素时不用 Iterator, 而是用 Enumeration 。其默认储存键值的数组长度为 11, 增长方式是 oldValue*2+1.
 
三.帮助类( Collections
它拥有一些静态方法,来操作集合类。
 
Sort(List list) : 采用自然排序功能
Sort(List list,Comparator compartor) : 采用定制的排序方式进行排序
Max(collection) : 取得集合中的最大值
Reserve(list) : LIST 中的元素位置调换
Get(listIterator,index) : 取得指定集合的指定位置的元素
Etc.
 
. 排序方式
1. 自然排序
JAVA 中有一些类实现了 Comparable 接口,或者一些默认的 (int,String,double..) 就实现了。这样就可以在加入到可排序的集合中时按照升序自动排序。
 
2. 客户排序
如果想定制排序方式,另一个接口可以帮助实现 Comparator 接口。
例如:如果想把一个用户类的实例加入集合时实现定制排序,则可以这样做
 
class UserComparator implements Comparator{
 
public int compare(Object o1,Object o2){
User u1=(User)o1;
User u2=(User)o2;
 
if(u1.getName().compareTo(u2.getName())>0)
return 1;
if(u1.getName().compareTo(u2.getName())<0)
return -1;
 
return 0;
}
}
----------------------------------------------------------------
class User{
public User(String name){
setName(name);
}
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
------------------------------------------------------------------
接下来以 TreeSet 为例,实现定制排序。
//param1: new User() ,because it had implemented Comparator
TreeSet treeSet=new TreeSet(new User());
User u1=new User(“abc”);
User u2=new User(“bac’);
User u3=new User(”cba”);
treeSet.add(u1);
treeSet.add(u2);
treeSet.add(u3);
 
Iterator i=treeSet.iterator();
 
while(i.hasNext()){
User user=(User)i.next();
System.out.print(user.getName());
 
}
 
输出结果为: cba bac abc
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值