J2SE学习笔记(4)集合框架

本文深入解析Java集合框架的核心概念,包括Collection、Set、List及Map等接口的不同特性与应用场景,并通过示例展示如何使用这些接口及其实现类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
实现类:8个实现类(实线表示),对接口的具体实现。

在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结构而不必改变其它代码。

Collection 接口是一组允许重复的对象。
Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。
List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。

Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。
容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。

 

//Collection接口
public class CollectionsLab {

    
public static void main(String[] args) {
 
           // 由一个双向链表后推而成,适合插入删除频繁的列表  
        List list 
= new LinkedList();
        list.add(
"asdf");
        list.add(
"saf");
        list.add(
"er");
        list.add(
"fg");
        Collections.sort(list);
        
for (int i = 0; i < list.size(); i++{
            System.out.println(list.get(i));
        }

        //由一个数组后推而成,适合查询频繁的列表
        List list
=new ArrayList();
        list.add(
new Score(90,89,67));
        list.add(
new Score(90,89,77));
        list.add(
new Score(90,32,67));
        list.add(
new Score(98,89,67));
        
           //List
           //方法分类
           //定位方法    get()、set()、add()、remove()、addAll()
           //搜索方法   indexOf() 和 lastIndexOf()

        Collections.sort(list,
new ScoreSort());
        
        
for (int i = 0; i < list.size(); i++{
            System.out.println(list.get(i));
        }

        
    }


}
/**[Set接口]
 * 扩展Collection接口
 * 不允许重复元素
 * 不允许null值
 * 对 add()、equals() 和 hashcode() 方法添加了限制
 * HashSet和TreeSet是Set的实现
 * 
*/

public class SetDemo {
    
public static void main(String args[]){
        Set set
=new TreeSet();
        set.add(
new String("asdfas"));
        set.add(
"sdf");
        set.add(
"sdf");
        
        
        Student s1
=new Student("20070703","allen","2","male");
        set.add(s1);
        
           //迭代器
          // ListIterator方法
          // listIterator() 和 subList()
        Iterator itr
=set.iterator();
        
while(itr.hasNext()){
            Object o
=itr.next();
            
if(o instanceof Student){
                System.out.println(o);
            }

        }


    }

}
    // Vector类
    public static void main(String[] args) {
        

        Vector v=new Vector();
        v.add(
"asdf");
        v.add(
"aewfadf");
        
        Iterator a
=v.iterator();
        
        Enumeration enu
=v.elements();
        
while(enu.hasMoreElements())
        
{
            System.out.println(enu.nextElement());
        }
    

    }
public class Data implements Enumeration{

    
private List list;
    
private int pos=0;
    
public static void main(String[] args) {
        
// TODO 自动生成方法存根
        List list = new ArrayList();
        list.add(
"1");
        list.add(
"2");
        list.add(
"3");
        list.add(
"4");
        
        Enumeration an
=new Data(list);
        
while(an.hasMoreElements())
        
{
            System.out.println(an.nextElement());
        }

    }


    
public boolean hasMoreElements() {
         
boolean flag = false;
            
if(pos<list.size())
                flag
=true;
        
return flag;
    }


    
public Object nextElement() {
        
// TODO 自动生成方法存根
        Object o=list.get(pos);
        pos
++;
        
return o;
    }

    
public Data(List list){
        
this.list=list;
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值