第十二章 集合
1:集合的作用就是管理数据
例如:数组,链表,二叉树。
2:集合分为:
Collection,Map,Iterator,都在Util包中
一:set集合
特征:不允许两个相同对象放入其中
1:HashSet:
//在Hash中的元素没有排序和分类
HashSet hs = new HashSet();//创建HashSet
//hs.add("小田");
//hs.add("小白");
//hs.add("小黑");
//声明变量si用于存放集合
int si = hs.size();
System.out.println("集合中元素的个数为"+si);
//从集合中删除元素
if(hs.remore("小白")){
System.out.println("删除成功");
System.out.println("集合中剩余的元素的个数为"+hs.size());
}
hs.clear();//删除所有元素
System.out.println("集合中剩余的元素的个数为"+hs.size());
//判断是否为空
if(hs.isEmpty){
System.out.println("集合中没有任何元素");
}
(2如何遍历集合?
获取集合的迭代器,调用iterator()方法,并通过hashNext()方法判断集合中是否还有元素,再调用next()方法取出元素对集合进行遍历。
例子:
HashSet hs = new HashSet();//创建HashSet
//hs.add("小田");
//hs.add("小白");
Iterator it = hs.iterator();//获取集合的迭代器
while(it.hashNext()){//对集合进行遍历
System.out.println("it.next()");//调用.next()方法取出
}
2:LinkedHashSet 类
按照元素插入顺序进行排序
使用功能和HashSet一样。
3:TreeSet类
按照元素的自然顺序进行升序排列
例子:
TreeSet ts = new TreeSet();//创建
ts.add("Shanghai");
ts.add("Chongqing");
ts.add("Beijing");
Iterator it = ts.iterator();
while(it.hashNext){
System.out.println("it.next()");//调用.next()方法取出
}
二:List接口及其实现类
List允许将两个相同的对象放入其中,并且可以根据索引插入和访问列表中的元素。
1:LinkedList类
双链表实现,列表中的元素按照索引位置排序,需要进行快速排序和删除时用LinkedList
注意:列表索引从0开始计算。
LinkedList一些方法:
boolean add() 添加
Object get(int index) 返回List中指定位置的元素
int indexOf(Object b) 返回第一个出现元素0的位置,否则返回-1;
int lastIndexOf(Object o) 最后一个
2:ArrayList类
数组实现,快速遍历列表,用ArrayList
对集合或者列表进行遍历时,也可以先取得集合或者列表的个数,再使用for循环进行遍历
3:Verctor类
需要线程安全时,使用Verctor
例子:
Verctor ve = new Vector();//创建
ve.add("Shanghai");
ve.add("Shandong");
Enumeration enu = Bve.elements();//获取Vector枚举
while(enu.hasMoreElements()){ //遍历
String s = (String)enu.nextElements();//对取出的元素进行强制类型转换
System.out.println(s);
}
三:Map接口及其实现类
Map 不继承Collection,键值对的方式(key/value)。
例子:Hashtable ht = new Hashtable();//创建
ht.put("a","小田");
ht.put("b","小白");
Set ks = ht.keySet();//遍历
Iterator it = ks.iterator();//取得迭代器
while(it.hasNext()){
String key = (String)it.next();//取键
Sysout.out.print("key="+key+"");
String value = (String)ht.get(key);//通过键取值
System.out.println("value="+value);
2:LinkedHashMap类
按照元素插入顺序排序,快速排序用LinkedHashMap
3:HashMap类
创建: HashMap hm = new HashMap();
添加:hm.put("a","小田");
取键集合:Set ks = hm.keySet();
取迭代器:Iterator it = ks.iterator();
遍历: while(it.hasNext()){
取键: String key = (String)it.next();
System.out.print("key="+key+"');
通过键取值: String value = (String)hm.get(key);
System.out.println("value="+value);
删除所有元素 hm.clear();
元素个数 System.out.println(“元素的个数”+hm.size());
}
4;TreeMap类
使用红黑算法。
}