集合框架

集合框架

  Collection表示一组对象,List有先后顺序,Set则不能有重复对象。

一、接口继承关系
ccinterf

二、实现

Implementations
Hash TableResizable ArrayBalanced TreeLinked List
InterfacesSetHashSet TreeSet 
List ArrayList LinkedList
MapHashMap TreeMap 


三、集合类的基本接口是Collection接口,它指一组对象(每个对象是一个元素),其中有些集合中允许有重复对象有些不允许,有些对象排序有些没有。它有两个基本方法。
1) boolean add(Object obj),如果该方法引起集合的变化,则返回true.
2) Iterator iterator()
其它方法有:
3) boolean addAll(Collection c)
4) void clear()
5) boolean contains(Object o)
6) boolean containsAll(Collection c)
7) boolean equals(Object o)
8) int hashCode()
9) boolean isEmpty()
10) boolean remove(Object o)
11) boolean removeAll()
12) boolean retainAll(Collection c)
13) int size()
14) Object[] toArray()
15) Object[] toArray(Object[] a)
四、Iterator接口,有三个基本方法
1) Object next()
2) boolean hasNext()
3) void remove()
与Enumeration相比,Iterator有两个特点:
1) 可以用以删除集合的元素
2) 方法名得到改善
五、接口关系图
interface
六、类的关系图
classes
七、旧的关系图
oldclassese

 

java的集合框架(Collection Framework),除了提供一些数据结构以便于编程开发之外,还提供了很多方法或接口用以在不同的数据结构之间进行转换,以达到一些特殊效果。

四、旧的集合
1、Hashtable
a)Hashtable与HashMap有相同的接口,且与Vector一样各个方法是同步的。
2、枚举接口
a)老的集合使用Enumeration接口来遍历各个元素序列,java.util.Enumeration有两个方法:hasMoreElements和nextElement
b)java.util.Hashtable

  • Enumeration keys()
  • Enumeratoin elements()


c)java.util.Vector

  • Enumeration elements()


3、属性集
a)属性集是个类型非常特殊的映像结构,有三个特性:

  1. 关键字和值都是字符串
  2. 表可以保存到一个文件,也可以从一个文件那里加载
  3. 有一个默认辅助表


b)用于实现一组属性的java平台类称为Properties
Properties settings=new Properties();
settings.put("CLASSPATH","C://jdk//lib");
settings.store(System.out,"Environment settings");
c)系统信息,被存放在一个由System返回的Properties对象中
import java.util.*;
/**
* This program prints out all system properties
*/
public class SystemInfo{
public static void main(String[] args){
Properties sp=System.getProperties();
Enumeration enum=sp.propertyName();
while( enum.hasMoreElements()){
String key=(String)enum.nextElement();
System.out.println(key+"="+sp.getProperty(key));
}
}
}
d)Properties类扩展了Hashtable类的功能,故后者的所有方法都可以用于前者。
e)例子
CustomWorld.ini
#Environment settings
#Sun Jan 21 07:22:52 1996
FONT=Serif
SIZE=400 200
MESSAGE=Hello, Custom world
COLOR=0 50 100
PTSIZE=36
-----------------------------
CustomWorld.java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import io.*;
import javax.swing.*;
public class CustomWorld{
public static void main(String[] args){
CustomWorldFrame frame=new CustomWorldFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class CustomWorldFrame extends JFrame{
public CustomWorldFrame(){
Properties ds=new Properties();
ds.put("FONT","Monospaced");
ds.put("SIZE","300 200");
ds.put("MESSAGE","Hello, World");
ds.put("COLOR","0 50 100");
ds.put("PTSIZE","12");
Properties settings=new Properties(ds);
try{
FileInputStream sf=new FileInputStream("CustomWorld.ini");
settings.load(sf);
}catch(FileNotFoundException e){
}catch(IOException e){
}
StringTokenizer st=new StringTokenizer(settings.getProperty("COLOR"));
int red=Integer.parseInt(st.nextToken());
int green=Integer.parseInt(st.nextToken());
int blue=Integer.parseInt(st.nextToken());
Color foreground=new Color(red,green,blue);
String name=settings.getProperties("FONT");
int size=Integer.parseInt(settings.getProperty("PTSIZE"));
Font f=new Font(name, Font.BOLD, size);
st=new StringTokenizer(settings.getProperty("SIZE"));
int hsize=Integer.parseInt(st.nextToken());
int vsize=Integer.parseInt(st.nextToken());
setsize(hsize,vsize);
setTitle(settings.getProperty("MESSAGE"));
JLabel label=new JLabel(settings.getProperty("MESSAGE"),SwingConstants.CENTER);
label.setFont(f);
label.setForeground(foreground);
getContentPane().add(label);
}
i.}
4、栈,扩展了Vector
a)void push(Object item)
b)Object pop()
c)Object peek()
5、位集合,BitSet类用于存放一个位序列
a)boolean get(int index)
b)void set(int index)
c)void clear(int index)
6、
五、算法
1、java.util.Collections
a)稳定排序,O(nlogn)

  • static void sort(List elements)
  • static void sort(List elements, Comparator c)


b)随机混排O(na(n))

  • static void shuffle(List elements)
  • static void shuffle(List elements, Random r)


c)反序
static Comparator reverseOrder()
d)对分搜索O(a(n)logn)

  • static int binarySearch(List elements, Object key)
  • static int binarySearch(List elements, Object key, Comparator c)


e)简单算法
static Object min(Collection elements)
static Object max(Collection elements)
static Object min(Collection elements, Comparator c)
static Object max(Collection elements, Comparator c)
static void copy(List to, List from)
static void fill(List l, Object value)
static void replaceAll(List l,Object oldvalue, Object newvalue)
static int indexOfsubList(List l,List s)
static int lastingdexOfSubList(List l, List s)
static void reverse(List l)
static void rotate(List l, int d)


六、视图与包装器
1、java.util.Collections
a)构建同步的集合的视图

  • static Collection synchronizedCollection(Collection c)
  • static List synchronizedList(List c)
  • static Set synchronizedSet(Set c)
  • static SortedSet synchronizedSortedSet(SortedSet c)
  • static Map synchronizedMap(Map c)
  • static SortedMap synchronizedSortedMap(SortedMap c)


b)构建不可变集合的视图

  • static Collection unmodifiableCollection(Collection c)
  • static List unmodifiableList(List c)
  • static Set unmodifiableSet(Set c)
  • static SortedSet unmodifiableSortedSet(SortedSet c)
  • static Map unmodifiableMap(Map c)
  • static SortedMap unmodifiableSortedMap(SortedMap c)


c)子列表或单个元素

  • static List nCopies(int n,Object value)
  • static Set singleton(Object value)


d)空值
static final List EMPTY_LIST
static final Set EMPTY_SET


2、java.util.Arrays
a)static List asList(Object[] array)

3、java.util.List
a)List subList(int from, int to)

4、java.util.SortedSet
a)SortedSet subset(Object from,Object to)
b)SortedSet headset(Object to)
c)SortedSet tailset(Object from)

5、java.util.SortedMap
a)SortedMap subMap(Object from, object to)
b)SortedMap headMap(Object to)
c)SortedMap tailMap(Object from)

七、与老的API的之间的关系
1、数组到集合
a)HashSet staff=new HastSet(Arrays.toList(String[] values))
2、集合到数组
a)String[] values=(String [])staff.toArray(new String[0]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值