一、Iterator(重要的接口)
是以统一方式对各种集合元素进行遍历/迭代的工具,也称为“迭代器”。
它允许在“遍历”过程中移除集合中的元素。
主要的方法有:
Boolean hasNext()
Object next()
Void remove()
例1:import java.util.*;
class TestIterator
{
public static void main(String[] args)
{
ArrayList a=new ArrayList();
a.add("hu");
a.add("g");
a.add("n");
Iterator it=a.iterator();
while (it.hasNext())
{
String ming=(String)it.next();
System.out.println(ming);
}
Vector v=new Vector();
v.addElement(new Date());
v.addElement(new Date(208121221L));
it=v.iterator();
while (it.hasNext())
{
Date time=(Date)it.next();
System.out.println(time);
}
System.out.println("Hello World!");
}
}
例2:import java.util.*;
class TestIterator2
{
public static void main(String[] args)
{
Vector v=new Vector();
v.addElement(new Person("hu",18));
v.addElement(new Person("g",26));
v.addElement(new Person("n",40));
Iterator it=v.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();
System.out.println(p);
if(p.getName().equals("hu"))
{p.setAge(p.getAge()+50);}
else if(p.getName().equals("n"))
it.remove();
}
for (int i=0;i<v.size() ; i++)
{
System.out.println(v.elementAt(i));
}
System.out.println("Hello World!");
}
}
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return ""+name+" : "+ age;}
}
注意:不安全原因:放进去ude内容是object类,又把它转换为Iterator类型。解决方法:<String>
修改:public static void main(String[] args)
{
ArrayList<String> a=new ArrayList<String>();
a.add("hu");
a.add("g");
a.add("n");
Iterator<String> it=a.iterator();
while (it.hasNext())
{
String ming=it.next();
System.out.println(ming);
}
二、HashSet
不允许出现重复的元素,不保证集合中元素的顺序,允许包含最多一个值为NULL的元素。
例:import java.util.*;
class TestHashSet
{
public static void main(String[] args)
{
HashSet h=new HashSet();
h.add("h");
h.add("o");
h.add(new Integer(3));
h.add(new Double(3.0));
h.add("o");
System.out.println(h.add(new Integer(3)));
System.out.println(h);
System.out.println(h.size());
Iterator it=h.iterator();
while (it.hasNext())
{
Object o=it.next();
System.out.println(o);
}
h.remove("o");
System.out.println(h);
}
}
三、TreeSet
可以实现排序(升序)功能,描述的是Set的变体
例:import java.util.*;
class TestTreeSet
{
public static void main(String[] args)
{
TreeSet ts=new TreeSet();
ts.add("orange");
ts.add("banana");
ts.add("apple");
ts.add("grape");
Iterator it=ts.iterator();
while (it.hasNext())
{
String fruit=(String)it.next();
System.out.println(fruit);
}
System.out.println("Hello World!");
}
}
四、Comparable接口
该接口中定义的comparableTo()用于提供对其实现类的对象进行整体排序所需的比较逻辑。
用户在重新comparableTo()方法以定制比较逻辑时,需要确保其与等价性判断方法equals()保持一致。
五、HashMap
基于哈希表实现了前述的映射集合结构。
影响性能的参数:初始容量,加载因子(0.75)
若不存在当前的检索值时,get()方法就会返回NULL值。
例:import java.util.*;
class TestHashMap
{
public static void main(String[] args)
{
HashMap h=new HashMap();
h.put(new Integer(1003),new Person(1003,"huang",15));
h.put(new Integer(1008),new Person(1008,"guo",25));
h.put(1015,new Person(1015,"quan",55));
Person p=(Person)h.get(1008);
System.out.println(p);
Set names=h.keySet();
for (Object o:names )
{
System.out.println(o);
}
Collection values=h.values();
for (Object o:values )
{
System.out.println(o);
}
System.out.println("Hello World!");
}
}
public class Person
{
private String name;
private int age;private int id;
public Person(String name,int age)
{this.name=name;this.age=age;}
public Person(int id,String name,int age)
{this.id=id;
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return name+" : "+ age;}
}
六、Hashtable
Hashtable中元素的“键”和“值”均不能为NULL,且它是同步(线程安全)的。
小结:3种线程同步的集合:
Vector,Stack,Hashtable
七、Enumeration接口
只提供了遍历Vecto和Hashtable(及其子类Properties),且不支持集合元素的移除操作。
八、Collection类
定义了多种集合的操作方法,实现了对集合元素的排序、取极值、批量拷贝、集合结构转换、循环移位以及匹配性检查等功能。
主要方法:
public static void sort(List list)
public static void reverse(List list) //倒置
public static void shuffle(List list) //随机打乱
public static void rotate(List list) //循环移位
例:import java.util.*;
public class TestCollections {
public static void main(String[] args){
ArrayList a=new ArrayList();
a.add(75); a.add(38); a.add(21);
a.add(4); a.add(12);
System.out.println(a);
Collections.sort(a);
Collections.reverse(a);
Collections.shuffle(a);
Collections.rotate(a, 2);
ArrayList b=new ArrayList();
b.add(55);b.add(66);
System.out.println(b);
Collections.copy(a,b);
System.out.println(a);
System.out.println(Collections.frequency(a,66));
System.out.println(Collections.max(a));
System.out.println(Collections.min(a));
}
}
八、Arrays类
定义了多种数组操作方法,实现了对数组的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。
例:import java.util.*;
public class TestArrays {
public static void main(String[] args) {
Integer[] a={3,25,12,79,48};
System.out.println(a);
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int idx=Arrays.binarySearch(a,25);
System.out.println(idx);
List list=Arrays.asList(3,4,5);
System.out.println(list);
list.set(2, 66);
System.out.println(Arrays.toString(a));
}
}
九、I/O系统
流:在Java程序中,对于数据的输入、输出操作以“流”方式进行。
文件
(外存)
程序
(内存)
输入流
输出流
分类:
1按数据流方向不同:输入流,输出流
2按处理数据单位不同:字节流(8位),字符流(16位)
3按功能不同:节点流,处理流
四种基本抽象流:
字节流 字符流
输入流 InputStream Reader
输出流 OuputStream Writer
节点流:可以从一个特定的数据源(节点)读写数据。
数据流是“连接”在已存在的流上。
注:摘抄自别人的 留着用
是以统一方式对各种集合元素进行遍历/迭代的工具,也称为“迭代器”。
它允许在“遍历”过程中移除集合中的元素。
主要的方法有:
Boolean hasNext()
Object next()
Void remove()
例1:import java.util.*;
class TestIterator
{
public static void main(String[] args)
{
ArrayList a=new ArrayList();
a.add("hu");
a.add("g");
a.add("n");
Iterator it=a.iterator();
while (it.hasNext())
{
String ming=(String)it.next();
System.out.println(ming);
}
Vector v=new Vector();
v.addElement(new Date());
v.addElement(new Date(208121221L));
it=v.iterator();
while (it.hasNext())
{
Date time=(Date)it.next();
System.out.println(time);
}
System.out.println("Hello World!");
}
}
例2:import java.util.*;
class TestIterator2
{
public static void main(String[] args)
{
Vector v=new Vector();
v.addElement(new Person("hu",18));
v.addElement(new Person("g",26));
v.addElement(new Person("n",40));
Iterator it=v.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();
System.out.println(p);
if(p.getName().equals("hu"))
{p.setAge(p.getAge()+50);}
else if(p.getName().equals("n"))
it.remove();
}
for (int i=0;i<v.size() ; i++)
{
System.out.println(v.elementAt(i));
}
System.out.println("Hello World!");
}
}
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return ""+name+" : "+ age;}
}
注意:不安全原因:放进去ude内容是object类,又把它转换为Iterator类型。解决方法:<String>
修改:public static void main(String[] args)
{
ArrayList<String> a=new ArrayList<String>();
a.add("hu");
a.add("g");
a.add("n");
Iterator<String> it=a.iterator();
while (it.hasNext())
{
String ming=it.next();
System.out.println(ming);
}
二、HashSet
不允许出现重复的元素,不保证集合中元素的顺序,允许包含最多一个值为NULL的元素。
例:import java.util.*;
class TestHashSet
{
public static void main(String[] args)
{
HashSet h=new HashSet();
h.add("h");
h.add("o");
h.add(new Integer(3));
h.add(new Double(3.0));
h.add("o");
System.out.println(h.add(new Integer(3)));
System.out.println(h);
System.out.println(h.size());
Iterator it=h.iterator();
while (it.hasNext())
{
Object o=it.next();
System.out.println(o);
}
h.remove("o");
System.out.println(h);
}
}
三、TreeSet
可以实现排序(升序)功能,描述的是Set的变体
例:import java.util.*;
class TestTreeSet
{
public static void main(String[] args)
{
TreeSet ts=new TreeSet();
ts.add("orange");
ts.add("banana");
ts.add("apple");
ts.add("grape");
Iterator it=ts.iterator();
while (it.hasNext())
{
String fruit=(String)it.next();
System.out.println(fruit);
}
System.out.println("Hello World!");
}
}
四、Comparable接口
该接口中定义的comparableTo()用于提供对其实现类的对象进行整体排序所需的比较逻辑。
用户在重新comparableTo()方法以定制比较逻辑时,需要确保其与等价性判断方法equals()保持一致。
五、HashMap
基于哈希表实现了前述的映射集合结构。
影响性能的参数:初始容量,加载因子(0.75)
若不存在当前的检索值时,get()方法就会返回NULL值。
例:import java.util.*;
class TestHashMap
{
public static void main(String[] args)
{
HashMap h=new HashMap();
h.put(new Integer(1003),new Person(1003,"huang",15));
h.put(new Integer(1008),new Person(1008,"guo",25));
h.put(1015,new Person(1015,"quan",55));
Person p=(Person)h.get(1008);
System.out.println(p);
Set names=h.keySet();
for (Object o:names )
{
System.out.println(o);
}
Collection values=h.values();
for (Object o:values )
{
System.out.println(o);
}
System.out.println("Hello World!");
}
}
public class Person
{
private String name;
private int age;private int id;
public Person(String name,int age)
{this.name=name;this.age=age;}
public Person(int id,String name,int age)
{this.id=id;
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return name+" : "+ age;}
}
六、Hashtable
Hashtable中元素的“键”和“值”均不能为NULL,且它是同步(线程安全)的。
小结:3种线程同步的集合:
Vector,Stack,Hashtable
七、Enumeration接口
只提供了遍历Vecto和Hashtable(及其子类Properties),且不支持集合元素的移除操作。
八、Collection类
定义了多种集合的操作方法,实现了对集合元素的排序、取极值、批量拷贝、集合结构转换、循环移位以及匹配性检查等功能。
主要方法:
public static void sort(List list)
public static void reverse(List list) //倒置
public static void shuffle(List list) //随机打乱
public static void rotate(List list) //循环移位
例:import java.util.*;
public class TestCollections {
public static void main(String[] args){
ArrayList a=new ArrayList();
a.add(75); a.add(38); a.add(21);
a.add(4); a.add(12);
System.out.println(a);
Collections.sort(a);
Collections.reverse(a);
Collections.shuffle(a);
Collections.rotate(a, 2);
ArrayList b=new ArrayList();
b.add(55);b.add(66);
System.out.println(b);
Collections.copy(a,b);
System.out.println(a);
System.out.println(Collections.frequency(a,66));
System.out.println(Collections.max(a));
System.out.println(Collections.min(a));
}
}
八、Arrays类
定义了多种数组操作方法,实现了对数组的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。
例:import java.util.*;
public class TestArrays {
public static void main(String[] args) {
Integer[] a={3,25,12,79,48};
System.out.println(a);
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int idx=Arrays.binarySearch(a,25);
System.out.println(idx);
List list=Arrays.asList(3,4,5);
System.out.println(list);
list.set(2, 66);
System.out.println(Arrays.toString(a));
}
}
九、I/O系统
流:在Java程序中,对于数据的输入、输出操作以“流”方式进行。
文件
(外存)
程序
(内存)
输入流
输出流
分类:
1按数据流方向不同:输入流,输出流
2按处理数据单位不同:字节流(8位),字符流(16位)
3按功能不同:节点流,处理流
四种基本抽象流:
字节流 字符流
输入流 InputStream Reader
输出流 OuputStream Writer
节点流:可以从一个特定的数据源(节点)读写数据。
数据流是“连接”在已存在的流上。
注:摘抄自别人的 留着用