JAVA容器 (自己的学习笔记)

1.集合类的继承结构:

Collection<--List<--Vector
Collection<--List<--ArrayListCollection<--List<--LinkedList


Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet

Map<--SortedMap<--TreeMap
Map<--HashMap

list和Collection,set,map都是接口,可以声明变量,不可以实例化。

全部封装在java.util


2.各个集合的API及使用

2.1collection集合体系共性方法-ArrayList

ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。可扩张50%。

import java.util.*;

public class Array_list {
  public static void main(String[] args ){
  ArrayList<String> al = new ArrayList<String>();
//增加
  al.add("haha");
  al.add("ge");
  al.add("welcom");
  al.add("this");
  al.add("is");
  al.add("police");
//迭代器输出 
  Iterator it = al.iterator();
  while(it.hasNext()){
   System.out.println(it.next());
  
  }
//删除元素 
 al.remove(1);//下表删除
 al.remove("welcom");//根据里面的值来删除
//输出
   it = al.iterator();
  while(it.hasNext()){
   System.out.println(it.next());
  
  }
//长度 
   System.out.println(al.size()); 
 
//查询
   System.out.println(al.indexOf("is"));
   System.out.println(al.indexOf("none"));
//是否为空
   System.out.println(al.isEmpty());
  }
 
 
}

2.2 Vector

Vector可以看作是基于数组的List,封装了数组所不具备的一些功能以方便使用。这也导致Vector无法避免数组的限制,性能也要逊于直接使用数组。值得注意的一点在于,Vector的方法中采用了synchronized进行同步,因此Vector是线程安全的,不过同步也导致了效率的降低。 

 

 List v = new Vector<Integer>();
   v.add(3);
      v.add(14);
      v.add(-1);
     
      Iterator it = v.iterator();
      while(it.hasNext()){
       System.out.println(it.next());

2.3 LinkedList 

顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。

 

2.4 List 通用方法

List集合元素是有序的,元素可以重复,因为该集合体系有索引

 

add(index,element);

addAll(index,Collection);

remove(index);

set(index,element);

get(index);

subList(from,to);

listIterator();

 

 ArrayList listO = new ArrayList ();
   listO.add("aa");
   listO.add("bb");
   ArrayList listT = new ArrayList ();
   listT.add("cc");
   listT.add("dd");
   ArrayList listAll = new ArrayList ();
   listT.addAll(2 , listO);//可取 0 ,1,2 代表位置
   //listT.addAll(1,listO);
 //迭代器输出  ,也可以用枚举,不流行
   Iterator it = listT.iterator();
   while(it.hasNext()){
    System.out.println(it.next());

 

2.6 map

Map一次存一对元素,同时键值对的形式。键和值有对应关系。在java里面,虽然有hash字义,只表示他内部是用hash原理实现的,使用起来还是map或是set,使用其主要原因是提高性能。

 

 HashMap<Integer,String> hm = new HashMap<Integer,String>();
   //添加
   hm.put(12,"zhangsan");
   hm.put(2, "bug");
   hm.put(2,"wangwu");
   hm.put(6,"zhaoliu");
      hm.put(4,"zhouqi");
     
      //获取
      System.out.println(hm.get(1));//不存在则返回null
      System.out.println(hm.get(2));
 
  //删除
      System.out.println(hm.remove(0));//不存在则返回null
      System.out.println(hm.remove(6));//返回存在的值
     
      //判断是否存在
      System.out.println(hm.containsKey(4));
 

 

  Set<Integer> hmset = hm.keySet();
      Iterator it = hmset.iterator();
      while(it.hasNext()){
       Object n = it.next();// 用Integer 错误
       System.out.println(n);
       System.out.println(hm.get(n));
      
      }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值