集合框架

 

参考资料总结出来的!

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构
 Collection 接口存储一组不唯一,无序的对象
 List 接口存储一组不唯一,有序(插入顺序)的对象
 Set 接口存储一组唯一,无序的对象
 (List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List 的 根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项)
 Set总结:
 1. Set实现的基础是Map(HashMap);   
 2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对 象

HashCode的作用
hashset传统比较方法是不能重复元素的,hashset本身就是采用哈希算法的对象集合,所以在新加进一个元素的时候会对原有元素进行循环遍历比较,HashCode每个对象都有一个哈希吗的存在,所以HashCode可以返回每个对象的哈希吗。分成若干个区域,系统自动把对象的哈希吗放到所对应的那个区域,从而达到提高效率的查找!


ArrayList 和 LinkedList的区别
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机      访问元素的效率比较高
LinkedList采用链表存储方式。插入、删除元素时效率比较高
Vector和ArrayList的异同
同:实现原理相同,功能相同,很多情况下可以互用
两者的主要区别如下
1.Vector线程安全,ArrayList重速度轻安全,线程非安全(前者只能一个线程对其进行操作,后者可以多线程,所以效率较高但不安全)
2.长度需增长时,Vector默认增长一倍,ArrayList增长50%
Hashtable和HashMap的异同
同:实现原理相同,功能相同,在很多情况下可以互用
两者的主要区别如下
1.Hashtable继承Dictionary类,HashMap实现Map接口
2.Hashtable线程安全,HashMap线程非安全
3.Hashtable不允许null值,HashMap允许null值

---实例一代码
package com.osekj.music;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  Person p1=new Person();
   p1.setName("张云和");
   p1.setAge(16);
  Person p2=new Person();
   p2.setName("郭凡");
   p2.setAge(12);
  /*//list集合使用-ArrayList
   List pList=new ArrayList();
   pList.add(p1);
   pList.add(p2);
  //单个取
  Person temp=(Person)pList.get(0);   
  //System.out.println(temp.getName());
  //删除
  pList.remove(0);
  //遍历取
  for (Object person : pList) {
   Person t=(Person)person;  //强制类型转换
   System.out.println(t.getName());
  }
  //list集合使用-ArrayList<E>
  List<Person> peList=new ArrayList<Person>();
  peList.add(p1);
  peList.add(p2);
  //单个取
  System.out.println(peList.get(0).getName());
  //遍历取
  for (Person person : peList) {
   if (person.getName().equals("张云和")) {
    System.out.println("有了");
   }
  }
  //判断是否存在
  if (peList.contains(p1)) {
   System.out.println("确实有了");
  }
  //list集合使用-LinkedList
  LinkedList<Person> plinkedlist=new LinkedList<Person>();
  
   plinkedlist.addFirst(p1);
  plinkedlist.addFirst(p2);
  //单个取   --栈数据结构
     System.out.println(plinkedlist.getFirst().getName());
     //单个移除
     plinkedlist.removeFirst();
     System.out.println(plinkedlist.getFirst().getName());
     plinkedlist.removeFirst();
    
  //模拟队列数据结构
  plinkedlist.addLast(p1);
  plinkedlist.addLast(p2);
  System.out.println(plinkedlist.getFirst().getName());
  //plinkedlist.removeFirst();
  System.out.println(plinkedlist.getFirst().getName());
  //plinkedlist.removeFirst();
  //遍历
  for (Person person : plinkedlist) {
   System.out.println(person.getName());
  }*/
  //map-HashMap<k, v>
  /*Map<String, Person> pMap=new HashMap<String, Person>();
  pMap.put("zyh", p1);
  pMap.put("gf", p2);
  //单个取
  System.out.println(pMap.get("gf").getName());
  //遍历键
  for (String k : pMap.keySet()) {
   System.out.println(k);
  }
  //遍历值
  for (Person p : pMap.values()) {
   System.out.println(p.getName());
  }
  //遍历键-值
  for (Entry<String, Person> e : pMap.entrySet()) {
   System.out.println(e.getKey()+":"+e.getValue().getName());
  }
  //查看有无此键
  if (pMap.containsKey("gf")) {
   System.out.println("在");
  }
  */

  Set<Person> persons=new HashSet<Person>();
  persons.add(p1);
  persons.add(p2);
  //新的遍历
  for (Person person : persons) {
   System.out.println(person.getName());
  }
  //老的迭代遍历
  Iterator<Person>  it= persons.iterator();
  while (it.hasNext()) {
   System.out.println(it.next().getName());
  }
  
  
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值