Java中的集合框架

附近中的图是集合框架中常用的类和接口:

一、用得最多的主要有Set,List,Map,Iterator这几个接口, Set和List接口都是Collection接口的子接口,有很多相同的地方,我们只是撑握了Collection接口的方法,Set和List的用法也就差不多了.

Set和List 的区别:1、Set是没有顺序的,不能放重复的数据(相同的数据)

2、List是有顺序的,可以存放重复的数据(相同的数据)

Set的实现类常用的主要有两个:HashSet、TreeSet

我们可以把一类对象添加到集合中,并且按对象的某一个属性进行排序(客户化排序和自然排序)

1、对TreeSet集进行客户化排序要求写一个类实现Comparator接口,并且重写其中的Compare方法 例:

客户化排序容易扩展,如果要按其它的属性排序,只需要重新写一个类实现Comparator接口就可以了,

不需要修改原来的代码。

class Users

{

private String name;

private int id;

public Users(String name,int id)

{

this.name=name;

this.id=id;

}

public void setName(String name)

{

this.name=name;

}

public String getName()

{

return name;

}

public void setId(int id)

{

this.id=id;

}

public int getId()

{

return id;

}

//这里重写了父类的toString方法

public String toString()

{

return this.name + "\t" + this.id + "\t";

}

}

//这个类实现Comparator接口,并且重写了其中的compare方法

public class MyComparator implements Comparator

{

public int compare(Object o1,Object o2)

{

Users user1=(Users)o1;

Users user2=(Users)o2;

if(user1.getId>user2.getId) return 1;

else if(user1.getId==user2.getId) return 0;

return -1;

}

}

class TestComparator

{

public static void main(String args[])

{

TestComparator.test();

}

public static void test()

{

Set set=new TreeSet(new MyComparator());

Users user1=new Users("张三",17);

Users user2=new Users("李四",13);

Users user3=new Users("王五",19);

Users user5=new Users("王五",19);

set.add(user1);

set.add(user2);

set.add(user3);

set.add(user5);



for(Object obj :set)

{

System.out.println(obj);

}

}

}

2、自然排序,将需要排序的那个类实现Comparable接口并且重写其中的compareTo方法

例如下: class Users implements Comparable

{

private String name;

private int id;

public Users(String name,int id)

{

this.name=name;

this.id=id;

}

public void setName(String name)

{

this.name=name;

}

public String getName()

{

return name;

}

public void setId(int id)

{

this.id=id;

}

public int getId()

{

return id;

}

//这里重写了父类的toString方法

public String toString()

{

return this.name + "\t" + this.id + "\t";

}

//重写compareTo方法

public int compareTo(Object o)

{



UserBean user = (UserBean) o;

if (this.id > user.id) return 1;

else if (this.id == user.id) return 0;

return -1;

}

}

3.如果是HashSet自然排序,则要求排序的类重写hashCode方法和equals方法

二、对List和Set集进行遍历:

List集有三种方法进行遍历:

1、通过下标遍历,2使用迭代器进行遍历,3、增强循环进行遍历

List list=new ArrayList();

list.add("aa");

list.add("bb");

list.add("cc");

for(int i=0;i<list.size();i++)

{

System.out.println(list.get(i));

}



Iterator it=list.iterator();

while(it.hasNext())

{

System.out.println(it.next());

}



for(Object obj :list)

{

System.out.println(obj);

}

三、Vector和ArrayList的区别:

1、Vector 和ArrayList都实现了List接口,Vector是线程安全的,可以多个线程同时访问,但性能比较差

2、ArrayList线程不安全,不支持多个线程同时访问,但性能比较好,访问的速度快



四、Map集是以键值对的形式存放的,键不可以重复,值可以重复,如果键重复,会将原来的值覆盖,

Map集的实现类主要有三个:HashMap,TreeMap,HashTable

HashMap与HashTable 的区别: 1、HashTable是线程安全的,支持同步。2、HashMap线程不安全,不支持

同步,但性能比HashTable好

Map集的遍历:

1、

Map map=new HashMap()

map.put("1","张飞");

map.put("2","关羽");

map.put("3","刘备");

//得到键的集合

Set set=map.keySet();

for(Object obj :set)

{

System.out.println(map.get(obj));

}

2、

//得到健值对的集合

Set s=map.entrySet();

for(Object obj :set) {

System.out.println(obj);

}

五、对List集进行客户化排序,可以通过Collections类的sort方法,要求传一个List集和一个Comparator对象 例:

List list=new ArrayList()

Users user1=new Users("张三",17); Users user2=new Users("李四",13);

Users user3=new Users("王五",19);

Users user5=new Users("王五",19);

list.add(user1);

list.add(user2);

list.add(user3);

list.add(user5);

Collections.sort(list,new Mycomparator());

Iterator it=list.iterator();

while(it.hasNext())

{

System.out.println(it.next());

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值