java集合l_java之路,集合类

集合框架:

所谓框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,包含了实现集合的接口与类。

Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。集合就是对象,它表示了一组对象。

Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。

List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。所谓有序是指List中元素按照一定的次序摆放

Map:包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。

ArrayList:我们可以将其看作是能够自动增长容量的数组。

利用ArrayList的toArray()返回一个数组。

Arrays.asList()返回一个列表。

迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素

import java.util.*

class ArrayListTest

{

public static void printElements(Collection c)   //打印元素

{

Iterator it = c.itorater();

while(it.hasNext())

{

System.out.println(it.next);

}

}

public static void main(String[] args)

{

ArrayList a1 = new ArrayList();

a1.add("zs");

a1.add("ls");

a1.add("ww");

printElement(a1);

a1.add(new Point(0,0));

a1.add(new Point(1,1));

a1.add(new Point(2,2));

for(int i=0; i

{

System.out.println(a1.get(i));  //get方法获取元素

}

System.out.println(a1);         //调用toString方法

Object[] obj = a1.toArray();     //返回一个包含元素的对象数组,Object类型

for(int i=0; i

{

System.out.println(obj[i]);

}

List l = array.asList(obj);    //从数组返回一个固定长度的链表

System.out.println(l);

l.add("wj");                   //错误,l的长度固定了

Iterator it = a1.iterator();    //迭代器方便操作数组

while(it.haaNext())             //hasNext判断有没有下一个元素

{

System.out.println(it.next());  //next返回下一个元素

}

Student st1 = new Student(0, "zs");

Student st2 = new Student(1, "ls");

Student st3 = new Student(2, "ww");

a1.add(st1);

a1.add(st2);

a1.add(st3);

Collections.sort(a1);  //自然排序

Collections.sort(a1,new Student.StudentComparator());

Collections.sort(a1,Collections.reverseOrder());  //反向排序

printElements(a1);

}

}

class Point

{

int i,j;

Point(int x, int y)

{

this.x = x;

this.y = y;

}

public String toString()

{

return "x=:" + x + ";" + "y=:" + y;

}

}

Collections类

排序:Collections.sort()   //对链表进行排序

(1)自然排寻(natural ordering );  //自然排序:2在3的前面,字母a在字母b的前面

(2)实现比较器(Comparator)接口。

取最大和最小的元素:Collections.max()、Collections.min()。

在已排序的List中搜索指定的元素:Collectons.binarySearch()

class Student impelments Comparable  //实现Comparable接口

{

int num;

String name;

Student(int num, String name)

{

this.num = num;

this.name = name;

}

static class StudentComparator imlements Comparator

{

public int compare(Object o1, Object o2)

{

Student s1 = (Student)o1;

Student s2 = (Student)o2;

int result = s1.num > s2.num ? 1 : (s1.num == s2.num ? 0 : -1);

if(result == 0)

{

result = s1.name.compareTo(s2.name)   //学号相同,比较名字

}

return result;

}

}

public int compareTo(Object o)    //覆盖compareTo方法

{

Student s = (Student)o;

return num > s.num ? 1:(num == s.num ? 0: -1);

}

public String toString(Student s)

{

return "num =:" + num + "name=:" + name;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值