java基础(七)------java集合框架

集合是java基础中比较重要的知识点。掌握好集合的知识对以后的程序开发很有用。由于本人知识有限,对于没有集合概念的人来说,可以从“1136”学起,也就是一张图,一个类(Collections),三个知识点和六个接口。java集合可以归纳为两类,这是根据集合框架的基础接口而言的。一类是以Collection接口的集合框架,一类是以Map接口的集合框架,根据我的理解,Collection是Map的基础,这句话会在后面解释。为了更加直观的表现集合框架,特意花了一张图。如下:

一个图

从图中可以更加清晰的了解java集合的结构。

一个类

Collections类提供了一系列的与集合相关的操作,包括:1,对List集合进行排序,逆序,“洗牌”,截取等等。2,查找和替换操作。3.对于集合中的有些线程不安全的类提供同步控制。

三个知识点----增强for循环,泛型,自动拆装箱。

增强for循环

在java1.5以后,针对集合和数组(数组也可以叫做集合)提出了增强for循环。用法如下:

package myday02;

import java.util.HashSet;
import java.util.Set;

public class Test1 {
	/*
	 * 增强for循环只是提供了一个遍历集合的方法,
	 * 此方法有一个缺点:就是只能看,不能更改。
	 */

	public static void main(String[] args) {
	//定义一个带泛型的Set	
		Set<String> set =new HashSet();
		set.add("zhangsan");
		set.add("lisi");
		set.add("wangwu");
	//增强循环举例。
		for(String s:set)
		{
			System.out.println(s);
			
		}

	}

}
泛型

自动拆装箱

在java5之前,如果往集合里面装入数据,必须将数据封装成对象。数组1要封装成Integer.....。从java5以后,这种情况就没有了,所有的基本数据库类型要往集合里面装的时候,虚拟机会自动的将基本数据类型封装成包装类型。

例子代码如下:

package myday02;

import java.util.LinkedList;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		
		List list =new LinkedList();
		//在java5以前
		list.add(new Integer(1));
		//在java5以后
		list.add(1);//在java5以前,这种写法错误

	}

}
六个接口

Collection接口

已经在上面提到,可以查看API;

Set接口

Set接口是Collection的子接口,但是他没有提供比Collection接口更多的方法,它的特性就是---“无序,不重复”。即所有想放入Set集合的对象使用equals方法返回值应该是false(在这里简要提一下Object类的equals方法http://blog.csdn.net/yuan514168845/article/details/17513437)。

List接口

List接口与Set接口最大的不同就是“有序,可重复”。即放入List集合的对象可以重复,并且会记住对象进入的次序。

Iterator接口

Iterator接口提供了对所有的集合的标准的遍历方式,Collection接口提供的方法iterator,会返回一个Iterator的是实现类的对象。但是每种集合框架实现此类的方式不一样,但是对外提供的方法一样,所以称为“标准的”;代码示例:

package myday02;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test1 {
	/*
	 * 增强for循环只是提供了一个遍历集合的方法,
	 * 此方法有一个缺点:就是只能看,不能更改。
	 */

	public static void main(String[] args) {
	//定义一个带泛型的Set	
		Set<String> set =new HashSet();
		set.add("zhangsan");
		set.add("lisi");
		set.add("wangwu");
	//增强循环举例。
		/*for(String s:set)
		{
			System.out.println(s);
			
		}*/
		
		
		//迭代器的固定代码
		Iterator it =set.iterator();
		while(it.hasNext())
		{
			System.out.println(it.next());
		}

	}

}


Map接口

Map接口及实现类存储的是“key--value”这样的称为“键值对”的元素。Map的底层实现是用一个Set集合加一个List集合组成。即:key不允许重复,value可以重复。这也是为什么前面说Collection是Map的基础。

Comparable接口

comparable接口提供了一种定制化的排序方案(这句话是我想出来的,可能不准确)。继承此接口的子类必须实现它的唯一方法。示例代码如下:

package myday01;
/*
 * 来自网上的一道题目:定义一个学生类,有姓名,成绩,年龄。
 * 要求:按照他们的成绩高低将他们输出
 * 
 */
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;

public class Test5 {

	public static void main(String[] args) {
		
		
		List set =new LinkedList();
		set.add(new Student("zhangsan",20,55));
		set.add(new Student("lisi",20,90));
		set.add(new Student("wangwu",20,30));
		set.add(new Student("zhaoliu",20,99));
		set.add(new Student("gouzi",20,70));
		set.add(new Student("wangerxiao",20,80));
		Collections.sort(set);
		System.out.println(set);
		

	}

}


//Comparable接口的使用
class Student implements Comparable
{
	
	private String name;
	private int age;
	private double score;
	
	public Student(String name,int age,double score)
	{
		this.name=name;
		this.age=age;
		this.score=score;
	}
	

	public String getName() {
		return name;
	}



	public void setName(String name) {
		this.name = name;
	}



	public int getAge() {
		return age;
	}

至此,“1136”说完,但是,想要彻底掌知识点,还需要深入。总结了集合的难点--------难的不是知识点,难的是对选用哪个集合框架比较合适。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值