JAVA类集框架简单介绍

一,认识类集
所谓类集就是一个动态对象数组,是对一些实现好的数据结构进行包装,最重要的是类集框架本身不受对象数组长度的限制。
类集框架被设计成拥有以下几个特性:
1,高性能
2,框架必须允许不同类型的类集以相同方式和高度互操作方式工作
3,类集框架必须是容易扩展和修改的
在JAVA中凡是以Sort开头的接口都属于排序的接口
下面介绍几种接口:
1,Collection接口
定义:public interface Collection <E>extends Iterable<E>
Collection接口是单值存放的最大父接口==(注意和和Collections区别,Collections是集合工具类,不属于集合体系,只是提供了关于集合操作的一些方法)==
在开发中很少直接使用,而是用其子接口,其子接口主要有:List,Set,Queue和SortedSet
二,List接口
接口定义:public interface List <E> extends Collection <E>
是Collection的子接口,里面可以保存重复元素
List接口常用的子接口:
ArrayList常用方法

 List<String>allList=null;
    allList=new ArrayList<String>();
    allList.add("HELLOW");
    allList.add(0,"WORD");
    System.out.print(allList+"\n");
    allList.remove(0);
    System.out.print(allList+"\n");
    allList.add("你好");
    for(int i=0;i<allList.size();i++)//size()方法求得集合长度
    {
     System.out.print(allList.get(i)+",");
    }
    System.out.print("\n");
    Object obj[]=allList.toArray();//将集合变为数组
   for(int i=0;i<obj.length;i++)
   {
    System.out.print(obj[i]);
   }
   System.out.print("\n是否包含HELLOW字符串:"+allList.contains("HELLOW")+"\n");
   System.out.print("HELLOW字符串的位置为:"+allList.indexOf("HELLOW"));
   //运行结果:
[WORD, HELLOW]
[HELLOW]
HELLOW,你好,
HELLOW你好
是否包含HELLOW字符串:true
HELLOW字符串的位置为:0
    

ArrayList与Vector的区别:

ArrayListVector
采用异步处理方式,性能高采用同步处理方式,性能较低
属于非线程安全的操作类采用线程安全的操作类

为达到操作链表的目的,必须使用LinkedList类

LinkedList<String>link=new LinkedList<String>();
   link.add("A");
   link.add("B");
   link.add("C");
   link.addFirst("X");
   link.addLast("Y");
   System.out.print("增加表头和表尾之后的链表:"+link);
   System.out.print("\n用Element()方法找到表头"+link.element()+"\n找到表头之后的链表:"+link);
   System.out.print("\n使用peek();方法找到的表头:"+link.peek()+"\n找到表头之后的链表:"+link);
   System.out.print("\n使用poll方法找到的表头:"+link.poll()+"\n找到表头之后的链表:"+link);
   //运行结果:
增加表头和表尾之后的链表:[X, A, B, C, Y]Element()方法找到表头X
找到表头之后的链表:[X, A, B, C, Y]
使用peek();方法找到的表头:X
找到表头之后的链表:[X, A, B, C, Y]
使用poll方法找到的表头:X
找到表头之后的链表:[A, B, C, Y]

三,Set接口
定义:
public interface Set<E> extends Collection<E>
Set接口并没有对Collection接口进行扩充,只是比Collection接口更加严格了,并且不能重复存储元素,也不能进行双向输出。
Set接口中有HashSet(散列存放)和TreeSet(有序存放)两个常用的子类
因为在TreeSet中元素是有序存放的,因此对于每个对象必须指定好其排序的顺序规则,且TreeSet中的每个对象所在的类都必须实现Comparable接口才能正常使用

class Person implements Comparable<Person>
 {
  private String name;
  private int age;
  public Person(String name,int age)
  {
   this.name=name;
   this.age=age;
  }
  public String toString(){
   return "姓名:"+this.name+" 年龄:"+this.age;
  }
  public int compareTo(Person per)
  {
   if(this.age>per.age) return 1;
   else if(this.age<per.age) return -1; 
   else return 0;
  }
 }
public class one1 { 
 public static void main(String[] args) {
   Set<Person> allset=new TreeSet<Person>();
   allset.add(new Person("张三",31));
   allset.add(new Person("李四",30));
   allset.add(new Person("王五",32));
   allset.add(new Person("王五",32));
   System.out.print(allset);
 }
}
//运行结果:
[姓名:李四 年龄:30, 姓名:张三 年龄:31, 姓名:王五 年龄:32]

四,集合的输出
1,迭代输出Itertor(从前向后单向输出)
所谓的迭代输出就是讲元素一个一个的进行判断,判断其是否有元素,如果有内容,则把内容取出。

List<T>all=new ArrayList<T>();
Itertor<T> iter=all.itertor();
//若要进行双向输出,则用ListIterator,但注意从后向前输出之前必须先从前向后输出

2,foreach输出
五,Map接口
定义:public interface Map<K,V>
在Map操作中,所有内容都是通过"key->value"的形式来保存数据的
其中key之和value之允许同时为null,但key值不允许重复,value值可以重复。

  Map<String,String>map=new HashMap<String,String>();
    map.put("小红", "喜欢苹果");
    map.put("小明", "橙子");
    map.put("小花", "香蕉");
    String val=map.get("小红");
    System.out.print(val);
    System.out.print("\n是否存在小红:"+map.containsKey("小红"));
    System.out.print("\n是否存在香蕉:"+map.containsValue("香蕉"));
    Set<String>keys=map.keySet();//将Map转换为集合
    System.out.print("\n"+keys);;
    //运行结果
喜欢苹果
是否存在小红:true
是否存在香蕉:true
[小明, 小红, 小花]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值