Java笔记:Java集合概述和Set集合(二)

2014-11-24 09:26:32 · 作者: · 浏览: 1
//it.next()方法返回的数据类型是Object类型
String book = (String)it.next();
System.out.println(book);
if(book.equals("Java")){
it.remove();
}
book = "测试字符串";
}
System.out.println(books);
}
}
如果要创建Iterator对象,则必须有一个被迭代的集合。
package cn.it.lsl;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("Java ee");
books.add("Java");
books.add("Android");
//获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext()){
//it.next()方法返回的数据类型是Object类型
String book = (String)it.next();
System.out.println(book);
if(book.equals("Android")){
//it.remove();
books.remove(book);
}
//book = "测试字符串";
}
//System.out.println(books);
}
}
//当使用Iterator迭代访问Collection集合元素时,Colleection集合里的元素不能被改变,只有通过Iterator的remove方法删除上一次next方法返回集合元素才可以。
eg:
package cn.it.lsl;
import java.util.Collection;
import java.util.HashSet;
public class ForeachTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("Java ee");
books.add("Java");
books.add("Android");
for(Object obj : books){
String book = (String)obj;
System.out.println(book);
if(book.equals("Android")){
//以下代码会引发异常
//books.remove(book);
}
}
System.out.println(books);
}
}
2.Set集合
Set集合与Collection基本上完全一样,它没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同。(Set不允许包含重复元素)。
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败。
eg:
package cn.it.lsl;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set books = new HashSet();
books.add(new String("java"));
boolean result = books.add(new String("java"));
System.out.println(result + "-->" + books);
}
}
1)HashSet类
(1)HashSet是Set接口的实现。HashSet按Hash算法来存储集合中的元素,具有很好的存取和查找性能。
(2)HashSet不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。
(3)当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该HashCode值决定该对象在HashSet中的存储位置。如果有两个元素
通过equals()方法比较返回true,但它们的hashCode()方法返回值不相等,HashSet将会把它们存储在不同的位置,依然可以添加成功。即,HashSet集合判断两个元素相等的标准是两个
对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。
eg:
package cn.it.lsl;
import java.util.HashSet;
class A{
public boolean equals(Object obj){
return true;
}
}
class B{
public int hashCode(){
return 1;
}
}
class C{
public int hashCode(){
return 2;
}
public boolean equals(Object obj){
return true;
}
}
public class HashSetTest {
public static void main(String[] args) {
HashSet books = new HashSet();
books.add(new A());
books.add(new A());
books.add(new B());
books.add(new B());