Java集合类
Java集合类都继承自Collection和Map接口,它们各自有众多的实现类,集合大致分为三大类Set、List和Map,其中Set是无序不重复的集合,List是有序可重复集合,Map是由键和值对组成的集合,集合中保存的是对象(对象引用),集合的实现类有多种:ListArray,HashSet,TreeSet,LinkedList,HashMap,TreeMap等。
Collection接口和Iterator接口:
Collection接口的方法:boolean add(Obiect o),boolean remove(Object o),Iterator iterator();
一、集合的遍历
1、Iterator接口
1 import java.util.*; 2 public class SetTest { 3 public static void main(String args[]){ 4 Collection books = new HashSet(); 5 books.add("JAVA从入门到精通"); 6 books.add("疯狂Java讲义"); 7 books.add("Java精编版"); 8 Iterator it = books.iterator(); 9 while(it.hasNext()){ 10 String book = (String)it.next(); 11 if(book.equals("疯狂Java讲义")){ 12 it.remove(); 13 } 14 book="测试字符串"; 15 } 16 System.out.println(books); 17 } 18 }
输出:
2、foreach循环遍历
1 import java.util.*; 2 public class ForeachTest { 3 public static void main(String args[]){ 4 Collection books = new HashSet(); 5 books.add(new String("JAVA从入门到精通")); 6 books.add(new String("疯狂Java讲义")); 7 books.add(new String("Java精编版")); 8 for(Object obj:books){ 9 String book = (String)obj; 10 System.out.println(book); 11 } 12 System.out.println(books); 13 } 14 }
输出:
Java精编版
疯狂Java讲义
JAVA从入门到精通
[Java精编版, 疯狂Java讲义, JAVA从入门到精通]
Iterator 和foreach用于遍历集合元素,不是迭代集合元素本身,而是把集合中的元素值传给了迭代变量;其中Iterator必须依赖于Collection类对象,它不具有盛装对象的功能;在集合遍历的过程中不能改变集合。Iterator 和foreach用于遍历集合元素,不是迭代集合元素本身,而是把集合中的元素值传给了迭代变量;其中Iterator必须依赖于Collection类对象,它不具有盛装对象的功能;
二、Set集合
Set集合是无需不重复集合,Set集合的实现类有HashSet、TreeSet和EnumSet。
Set集合不允许两个相同对象的存在,Set集合中判断两个集合相同使用的方法是equals方法, 而不是==运算符,具体区别可以参考java学习笔记equals()和==比较,只要equals返回true,就认为是相同元素,不过由于Set集合的元素是根据hashCode来判断的,所以有时候equals返回true而hashCode不同也会判断为不同的对象;所以要尽量保持equals方法和hashCode判断一致。
HashSet类
HashSet类使用hash算法存储Set中的值,存取一个元素时,利用该元素(对象)的HashCode()方法获取元素的hashCode值,根据hashCode确定存储位置。不能保证排序,每个值分配一个hashCode,HashSet判断两个元素是否相等通过equals和hashCode判断,两个同时相等才相等;LinkedHashSet类是HashSet的子类,与HashSet不同的是LinkedHashSet会保存元素添加时的次序。
1 import java.util.*; 2 public class SetTest { 3 public static void main(String args[]){ 4 HashSet ch = new HashSet(); 5 ch.add("A"); 6 ch.add("D"); 7 ch.add("B"); 8 ch.add("C"); 9 System.out.println(ch); 10 HashSet books = new HashSet(); 11 books.add(-4); 12 books.add(-10); 13 books.add(6); 14 System.out.println(books); 15 } 16 }
输出:
[A, B, C, D]
[-4, 6, -10]
TreeSet类
TreeSet可以确保集合中元素有序,根据元素值的大小排序,排序方法又有自然排序和定制排序,默认使用自然排序;
自然排序方式是利用对象的compareTo(Object o)比较结果来升序排列,比较结果为正整数,0或者负整数,为0时表示两个对象相同,返回0时对象相同,根据Set集合的规则,此时equals()应该返回true。
1 import java.util.*; 2 public class SetTest { 3 public static void main(String args[]){ 4 TreeSet ch = new TreeSet(); 5 ch.add("A"); 6 ch.add("D"); 7 ch.add("B"); 8 ch.add("C"); 9 System.out.println(ch); 10 TreeSet books = new TreeSet(); 11 books.add(-4); 12 books.add(-10); 13 books.add(6); 14 System.out.println(books); 15 } 16 }
输出:
[A, B, C, D]
[-10, -4, 6]
注:文中部分取自《疯狂Java讲义》
posted on 2016-04-29 11:16 wbzhou1992 阅读(137) 评论(0) 收藏 举报
浙公网安备 33010602011771号