JAVA utils Collection 数组 list

一、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



节点流:可以从一个特定的数据源(节点)读写数据。

数据流是“连接”在已存在的流上。


注:摘抄自别人的 留着用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值