ArrayList用对象数组来实现
ArrayList al = new ArrayList()
Al.add(“sun”);
Al.add(“wei”);
Al.add(“xin”);
For(int I = 0;i<al.size();i++)
Print(al.get(i));
也可以直接打印对象al,ArrayList有覆盖toString方法
用过asList返回一个固定尺寸的数组,不可以增加元素但是可以通过List.set修改元素
获取一个数组toArray()方法
ArrayList
import java.util.ArrayList;
class ArrayListTest
{
public static void main(String[] args)
{
ArrayList<Point> al = new ArrayList<Point>();
al.add(new Point(2,2));
al.add(new Point(5,5));
al.add(new Point(3,2));
System.out.println(al);
}
}
class Point
{
int x,y;
Point(int x,int y)
{
this.x = x;
this.y = y;
}
public String toString()
{
return "xx="+x+","+"yy="+y;
}
}
覆盖toString方法
直接打印对象输出的结果会是这样的: [xx=2,yy=2, xx=5,yy=5, xx=3,yy=2]添加了一[]这两个
迭代器
Collection提供了一个iterator()可以返回一个迭代器接口!
可以认为迭代器就是两个元素的中间位置!
Iterator it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
List没有真正实现remove方法
迭代器有一个好处就是通用性强,在各个集合类中都可以使用,只要是继承自Collection接口。
Collections而非接口Collection,Collections.sort()来排列
void sort(List<T> list);传入一个List接口
也可以传入一个比较器Compartor
void sort(List<T> list, Comparator<? super T> c)
传入一个比较器Comparator
比较器定义:
实现java.util
接口 Comparator<T>
方法摘要 | |
int | |
boolean |
实现compare方法,进行比较
可以将实现的比较器作为对象的内部类来声明,这样可以加强对象和比较器的联系
如果要对学生进行反序排列,可以通过reverseOrder返回一个比较器传入sort中来实现比较器。
LinkedList
addfirst(),addlast(),removefirst(),removelast():
用LinkedList来实现Stack,Queue来实现
HashSet
HashSet是从Set继承而来的,不允许重复的元素
import java.util.HashSet;
import java.util.Iterator;
class HashSetTest
{
public static void main(String[] args)
{
HashSet<String> hs = new HashSet<String>();
hs.add("one");
hs.add("two");
hs.add("three");
hs.add("one");
Iterator it = hs.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
打印出来的是:
two
one
three
HashSet没有get方法,但是可以通过获取迭代器来获得!
如果将一对象插入到HashSet里面,那么就必须实现hashCode以及equalls方法,String类型的Hashcode是根据地址来作为散列的依据
实现Set接口的hash table(哈希表),依靠HashMap来实现的。
我们应该为要存放到散列表的各个对象定义hashCode()和equals()。这样才能判断重复
public int hashCode()
{
return num*name.hashCode();
}
public boolean equals(Object o)
{
Student s=(Student)o;
return num==s.num && name.equals(s.name);
}
TreeSet
n TreeSet是一个有序集合,TreeSet中元素将按照升序排列,缺省是按照自然顺序进行排列,意味着TreeSet中元素要实现Comparable接口。
我们可以在构造TreeSet对象时,传递实现了Comparator接口的比较器对象
没有get方法,需要通过迭代器来实现!
TreeSet中的对象必须实现Comparable接口,或者传入一个比较器!
HashMap
键值对
可以通过put放入元素,get获得元素
可以通过keySet来获得健值
Values来获得值
EntrySet来获得健值对,返回Map.Entry,可以果果这个类的getKey,getValue来获得值!
ashMap hm=new HashMap();
hm.put("one","zhangsan");
hm.put("two","lisi");
hm.put("three","wangwu");
System.out.println(hm.get("one"));
System.out.println(hm.get("two"));
System.out.println(hm.get("three"));
Set keys=hm.keySet();
System.out.println("Key:");
printElements(keys);
Collection values=hm.values();
System.out.println("Value:");
printElements(values);
Set entry=hm.entrySet();
//printElements(entry);
Iterator it=entry.iterator();
while(it.hasNext())
{
Map.Entry me=(Map.Entry)it.next();
System.out.println(me.getKey()+":"+me.getValue());
}
TreeMap
TreeMap和HashMap用法差不多
n 和Set类似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的时候,才使用TreeMap。
在多线程中为了获取安全的mao,set,list可以用过Collections的方法安全获取
Properties类
继承自HashTable,获取当前系统输出流的属性
也可以用来读取配置文件
import java.util.*;
import java.io.*;
class PropTest
{
public static void main(String[] args)
{
Properties pps=new Properties();
try
{
pps.load(new FileInputStream("winsun.ini"));
Enumeration enum=pps.propertyNames();//返回一个每局类型,和迭代器差不多
while(enum.hasMoreElements())
{
String strKey=(String)enum.nextElement();
String strValue=pps.getProperty(strKey);//通过键值获得值
System.out.println(strKey+"="+strValue);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}