码迷,mamicode.com
首页 > 编程语言 > 详细

java的集合对比----Collection(续)

时间:2015-07-10 18:58:54      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

Set接口

关于Set接口,在上课时总是很少提到,所以对它的认识并不多,实现set接口的类,里面的元素没有重复的。他依赖于map,其实我们保存的值,是保存的key,在map中,key不会重复,所以set也就没有重复的元素,它的实现类有三个:HashSet,TreeSet,LinkedHashSet.

 1 public static void main(String[] args) {
 2         //Set<Integer> set = new HashSet<Integer>();
 3         // Set<Integer> set = new TreeSet<Integer>();
 4         Set<Integer> set = new LinkedHashSet<Integer>();
 5         set.add(null);
 6         Random rd = new Random();
 7         System.out.println("添加顺序:");
 8         for (int i = 0; i < 20; i++) {
 9             int x = rd.nextInt(30);
10             set.add(x);
11             System.out.print(x + ",");
12         }
13         System.out.println();
14 
15         System.out.println("遍历顺序:");
16         Iterator iterator = set.iterator();
17         while(iterator.hasNext()){
18             System.out.print(iterator.next() + ",");
19         }
20     }

 

 

HashSet:他是无序的,可以保存null,添加顺序和遍历结果如下:

技术分享

LinkedHashSet:他保持了元素的添加顺序,可以保存null,添加顺序和遍历结果如下:

技术分享

TreeSet:他是一个有序集合,元素按照顺序排列,但是不能保存null,添加顺序和遍历结果如下:

技术分享

我们自己定义的类,如果要加入到TreeSet中,需要实现接口Comparable 中的compareTo方法 ,定义自己的比较规则,否则会抛出一个异常。

技术分享

给个Demo,自定义的规则是先比较int,再比较string,无论Model1,Model2,Model3的添加顺序怎么变,输出都是一样的, eg:

 1 public class Model implements Comparable {
 2     String str;
 3     int num;
 4     @Override
 5     public int compareTo(Object arg0) {
 6         Model tmp = (Model)arg0;
 7         int cmp = this.num - tmp.num;
 8         if(cmp == 0){
 9             return str.compareTo(tmp.str);
10         }
11         return cmp;
12     }
13 }
14 
15 public static void main(String[] args) {
16         TreeSet<Model> ts = new TreeSet<Model>();
17         Model m2 = new Model();
18         m2.str = "121";
19         m2.num = 1;
20         ts.add(m2);
21         
22         Model m3 = new Model();
23         m3.str = "121";
24         m3.num = 2;
25         ts.add(m3);
26         
27         Model m1 = new Model();
28         m1.str = "321";
29         m1.num = 1;
30         ts.add(m1);
31         
32         Iterator<Model> it = ts.iterator();
33         while(it.hasNext()){
34             Model tmp = it.next();
35             System.out.println(tmp.str + ":" + tmp.num);
36         }
37     }

 

java的集合对比----Collection(续)

标签:

原文地址:http://www.cnblogs.com/lzq1065763582/p/4636371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!