集合框架(下)

  1 import java.util.*;
  2 
  3 /*
  4 將自定義對象做爲元素存到ArrayList集合中,並去除重複元素。
  5 
  6 好比:存人對象。同姓名同年齡,視爲同一我的。爲重複元素。
  7 
  8 
  9 思路:
 10 1,對人描述,將數據封裝進人對象。
 11 2,定義容器,將人存入。
 12 3,取出。
 13 
 14 
 15 
 16 List集合判斷元素是否相同,依據是元素的equals方法。
 17 
 18 
 19 
 20 */
 21 
 22 class Person
 23 {
 24     private String name;
 25     private int age;
 26     Person(String name,int age)
 27     {
 28         this.name=name;
 29         this.age=age;
 30     }
 31     public String getName()
 32     {
 33         return name;
 34     }
 35     public int getAge()
 36     {
 37         return age;
 38     }
 39 
 40     public boolean equals(Object obj)//必定要複寫父類的equals方法
 41     {
 42         if (!(obj instanceof Person))
 43             return false;
 44         
 45         Person p=(Person)obj;
 46         
 47         ArrayListTest2.sop(this.name+"-------"+p.name);
 48         return this.name.equals(p.name) && this.age == p.age;
 49     }
 50 }
 51 class ArrayListTest2 
 52 {
 53     public static void main(String[] args) 
 54     {
 55         ArrayList al =new ArrayList();
 56         
 57         al.add(new Person("lili",22));
 58         al.add(new Person("liu",20));
 59         al.add(new Person("who",20));
 60         al.add(new Person("liu",20));
 61 
 62         sop("remove:。。。。"+al.remove(new Person("liu",20)));//remove方法底層也是調用equals方法
 63 
 64         //sop(al);//[Person@1d10caf0, Person@397b6178, Person@533c2ac3, Person@131b92e6]
 65 
 66         //getElements(al);
 67 
 68         al=singleElement(al);
 69 
 70         
 71         getElements(al);
 72     }
 73 
 74     public static void getElements(ArrayList al)
 75     {
 76         for (Iterator it =al.iterator();it.hasNext() ;)
 77         {
 78             //sop(((Person)it.next()).getName());
 79             Person p =(Person)it.next();
 80             sop(p.getName()+"::"+p.getAge());
 81         }
 82     }
 83 
 84     public static void sop(Object obj)
 85     {
 86         System.out.println(obj);
 87     }
 88 
 89     public static ArrayList singleElement(ArrayList al)
 90     {
 91         //定義個臨時容器用於裝載符合條件的對象
 92         ArrayList alNew =new ArrayList();
 93 
 94         
 95         for (Iterator it =al.iterator(); it.hasNext(); )
 96         {
 97             Object obj =it.next();
 98             if (!alNew.contains(obj))//contains方法底層就是調用equals方法
 99              alNew.add(obj);
100         }
101 
102         return alNew;
103     }
104 }
105 
106 import java.util.*;
107 /*
108 |--Set:元素是無序(存入和取出的順序不必定一致),元素不能夠重複。、
109     |--HashSet:底層數據結構是哈希表。是線程不安全的。不一樣步。
110             HashSet是如何保證元素惟一性的呢?
111             是經過元素的兩個方法,hashCode和equals來完成。
112             若是元素的HashCode值相同,纔會判斷equals是否爲true。
113             若是元素的hashcode值不一樣,不會調用equals。
114 
115             注意,對於判斷元素是否存在,以及刪除等操做,依賴的方法是元素的hashcode和equals方法。
116 
117 
118     |--TreeSet:
119 
120 Set集合的功能和Collection是一致的。
121 
122 
123 
124 
125 */
126 
127 
128 class HashSetDemo 
129 {
130     public static void sop(Object obj)
131     {
132         System.out.println(obj);
133     }
134     public static void main(String[] args) 
135     {
136         
137         HashSet hs = new HashSet();
138 
139         sop(hs.add("java01"));
140         sop(hs.add("java01"));
141         hs.add("java02");
142         hs.add("java03");
143         hs.add("java03");
144         hs.add("java04");
145 
146         Iterator it = hs.iterator();
147 
148         while(it.hasNext())
149         {
150             sop(it.next());
151         }
152     }
153 }
154 
155 
156 import java.util.*;
157 
158 /*
159 往hashSet集合中存入自定對象
160 姓名和年齡相同爲同一我的,重複元素。
161 
162 
163 
164 
165 
166 */
167 class HashSetTest 
168 {
169     public static void sop(Object obj)
170     {
171         System.out.println(obj);
172     }
173     public static void main(String[] args) 
174     {
175         HashSet hs = new HashSet();
176 
177         hs.add(new Person("a1",11));
178         hs.add(new Person("a2",12));
179         hs.add(new Person("a3",13));
180 //        hs.add(new Person("a2",12));
181 //        hs.add(new Person("a4",14));
182 
183         //sop("a1:"+hs.contains(new Person("a2",12)));
184             
185 //        hs.remove(new Person("a4",13));
186         
187 
188         Iterator it = hs.iterator();
189 
190         while(it.hasNext())
191         {
192             Person p = (Person)it.next();
193             sop(p.getName()+"::"+p.getAge());
194         }
195     }
196 }
197 class Person
198 {
199     private String name;
200     private int age;
201     Person(String name,int age)
202     {
203         this.name = name;
204         this.age = age;
205     }
206     
207     public int hashCode()
208     {
209         System.out.println(this.name+"....hashCode");
210         return name.hashCode()+age*37;
211     }
212 
213     public boolean equals(Object obj)
214     {
215 
216         if(!(obj instanceof Person))
217             return false;
218 
219         Person p = (Person)obj;
220         System.out.println(this.name+"...equals.."+p.name);
221 
222         return this.name.equals(p.name) && this.age == p.age;
223     }
224 
225     
226     public String getName()
227     {
228         return name;
229     }
230     public int getAge()
231     {
232         return age;
233     }
234 }
235 
236 /*
237 
238 
239 */
相關文章
相關標籤/搜索