java 集合框架
时间:2010-09-21 来源:刘璐
java 的集合框架,位于 java.util包下
collection
List(有序,可重复) set(无序,不可重复) queue(队列)
ArrayList linkedList
[ArrayList] add, size,clear,get,set
[linkeList] addFirst,addlast,removefirst()removelast()
[set]:add,remove,clear,size
ArrayList查询的速度要快一些, LinkedList删,添的速度要快点
Map stu = new HashMap();
put,clear,keyset,values,remove,size等
import java.util.*;
public class Student {
private String name;
private String sex;
private int age;
//构造方法
public Student() {
super();
}
public Student(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
//封装
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//读取里面的数据
public static void print(List newList){
for(int i=0;i<newList.size();i++){
Student s = (Student)newList.get(i);//返回列表中指定位置的元素。就是对象
System.out.println((i+1+":"+s.getName()));
System.out.println((i+1+":"+s.getSex()));
System.out.println((i+1+":"+s.getAge()));
}
}
public static void main(String args[]){
Student stu1 = new Student("张三","男",20);
Student stu2 = new Student("李四","女",22);
Student stu3 = new Student("五四","女",21);
Student stu4 = new Student("在四","女",22);
Student stu5 = new Student("赵六","女",31);
Student stu6 = new Student("田七","女",11);
Student stu7 = new Student("aa","女",11);
//List ls = new ArrayList();
LinkedList ls = new LinkedList();
List l = new ArrayList();
ls.add(0,stu1);
ls.add(stu2);
ls.add(stu3);
ls.add(stu4);
ls.add(stu5);
ls.add(stu6);
//添加的删除[首 尾]
/*ls.addFirst(stu7);
ls.addLast(stu7);*/
// ls.removeFirst();
// ls.removeLast();
//ls.removeFirstOccurrence(stu2);
l.add(stu1);
l.add(stu7);
//ls.addAll(2,l); //将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)"可以添加其它List集合"。
//ls.remove(stu1);// 用户对象名删除,还可以用下标删除
//ls.removeAll(ls);//从列表中移除指定 collection 中包含的其所有元素(可选操作)。
//ls.retainAll(ls);//仅在列表中保留指定 collection 中所包含的元素(可选操作)。
System.out.println("T98共有几名学员:"+ls.size());
System.out.println("*********************************");
System.out.println("T98共有几名学员:"+l.size());
System.out.println("*********************************");
//ls.set(2, stu1);//用指定元素替换列表中指定位置的元素(可选操作)。
//ls.subList(0,2).clear();//此方法省去了显式范围操作(此操作通常针对数组存在)在这个范围内就可以删除。
// ls.subList(0,2).add(stu7);
//查找集合
// if(ls.contains(ls))
// System.out.println("此数据存在!");
// else
// System.out.println("对不起没有你要找的东西!");
//查找对象名 还可以通过索引查找 ls.get(1)
//int indexOf(Object o)返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
//int lastIndexOf(Object o)返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
// if((ls.indexOf(stu1)) != -1)
// System.out.println("此数据存在!");
// else
// System.out.println("对不起没有你要找的东西!");
//ls.remove(0);
System.out.println("T98共有几名学员:"+ls.size());
print(ls);
}
}
package JSPch1;
import java.util.*;
public class Student2 {
private String name;
private String sex;
private int age;
//构造方法
public Student2() {
super();
}
public Student2(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public Student2(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
//封装
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public static void print(Object stu){
for(int i=0;i<1;i++){
System.out.println(i+1+"个:");
}
}
@Override
public String toString() {
// TODO 自动生成方法存根
return "姓名:"+this.getName()+"性别:"+this.getSex()+"年龄:"+this.getAge();
}
public static void main(String[] args) {
// TODO 自动生成方法存根
//定义集合
Map ma = new HashMap();
Map ls = new HashMap();
Student2 stu1 = new Student2("张三","男",12);
Student2 stu2 = new Student2("李四","男",20);
Student2 stu3 = new Student2("王五","男",22);
//Student2 stu4= new Student2("王五","男");
ma.put(stu1.getName(), stu1);
ma.put(stu2.getName(), stu2);
ma.put("王五", stu3);
// System.out.println(ma.get(stu1.name));
// if(ma.containsKey(stu3.name)){
// System.out.println(ma.get(stu3.name));
// }
// else{
// System.out.println("对不起没有你要查找的数据!");
// }
//ma.remove("李四");
System.out.println("键集:"+ma.keySet());
System.out.println("值集:"+ma.values());
// System.out.println("键值和一"+ma);
System.out.println("==========================================");
System.out.println("在校学员人数:"+ma.size());
System.out.println("==========================================");
//通过键,获得所有的键值
Set<String> set = ma.keySet();
Iterator<String> it= set.iterator();
while(it.hasNext()){
String key = it.next();
System.out.println(key);
// List<Board> list=map.get(key);//Map得到它的键里的值
// List<Board> ls = new ArrayList<Board>();
Student2 d=(Student2) ma.get(key);//看你上面的值是,Student2对象,还是集合
System.out.println(d.getName()+"\t"+d.sex+"\t"+d.getAge());
}
//数组排序
String[] art ={"12","45","745","5","4"};
Arrays.sort(art);
for(String x : art){
System.out.println(x);
}
}
}
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。
HashTable :此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
HashMap: 基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。