java基础复习总结3

collection 集合框架





在集合里面toString方法被重写 所以输出的时候按照重写的格式输出

list 接口的 经常用到的实现类 ArrayList LinkedList

 

ArrayList 底层是采用数组实现的,初始长度为10的数组。

常用的方法 add() get() isEmpty() size() toArray()···

ArrayList 内部是存储的对象的引用,要添加原生数据类型,要把原生数据类型包装成引用类型之后再添加

当重ArrayList里面取出 对象时候 加入 的对象是什么 就要用强制转换成什么;

当使用toArray()生成object数据的时候不能直接进行类型转换,要遍历object数据 对里面的每一个元素进行类型转换

LinkedList 底层采用双向链表来实现 底层维护的是 entry 对象 Entry {Entry previous;object element; Entry next;}当检索时采用ArrayList比较方便 当执行 增加 删除 操作的时候 使用 LinkedList 比较方便

栈 后进先出 队列 先进先出

 

set 常用到的实现类 hashset 不允许有重复的对象 如何判断重复 主要通过添加对象的 hashcode() equals()方法

某个对象重写了 这个两个方法 作用就是相同的姓名的对象就不可以增加进去了。

public int hashCode()
 {
  final int prime = 31;
  int result = 1;
  result = prime * result + ((name == null) ? 0 : name.hashCode());
  return result;
 }

 public boolean equals(Object obj)
 {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Student other = (Student) obj;
  if (name == null)
  {
   if (other.name != null)
    return false;
  }
  else if (!name.equals(other.name))
   return false;
  return true;
 }

 // public int hashCode()
 // {
 // return this.name.hashCode();
 // }
 //
 // public boolean equals(Object obj)
 // {
 // if(this == obj)
 // {
 // return true;
 // }
 //
 // if(null != obj && obj instanceof Student)
 // {
 // Student s = (Student)obj;
 //
 // if(name.equals(s.name))
 // {
 // return true;
 // }
 // }
 //
 // return false;
 // }

 

 

 hashset 遍历 集合 通过  调用 interator()获得一个迭代器,

然后 通过一个循环 hasNext()方法来判断是否有下一个元素,用调用next()方法 获得下一个方法

 

sortedset 实现类 treeset 带有排序的集合

 

treeset 里面添加的元素需要可以排序的 如果不可以排序 要自己添加比较器(定义一个类 实现 comparetor 接口 并实现 里面的 compare(A,B)方法,并用这个类创建一个 comparetor类型的对象 用来初始化这个treeset)

 

arrays 操作数组 collections 操作集合的类

 

map hashmap treemap

 

Map的keySet()方法会返回key 的集合,因为 Map的键是不能重复的,因此 keySet()方法的返回类型是 Set;而 Map 的值是可以重复的,因此 values()方法的返回类型是 Collection,可以容纳重复的元素

 

遍历map 可以先通过 keySet() 获得 key 的set 然后通过调用 iterator()获得一个迭代器 通过遍历迭代器来遍历map;或者 调用 entrySet() 返回map.entry 类型 的集合,map.entry 类型 维护了 key 和 value 的信息通过调用 map.entry.getkey() getvalue()方法 遍历。


  HashMap map = new HashMap();
  
  map.put("a", "aa");
  map.put("b", "bb");
  map.put("c", "cc");
  map.put("d", "dd");
  
  Set set = map.entrySet();
  
  for(Iterator iter = set.iterator(); iter.hasNext();)
  {
   Map.Entry entry = (Map.Entry)iter.next();
   
   String key = (String)entry.getKey();
   String value = (String)entry.getValue();
   
   System.out.println(key + " : " + value);
  }
  
    HashSet 底层是使用 HashMap 实现的。当使用 add 方法将对象添加到 Set 当中时,
实际上是将该对象作为底层所维护的 Map对象的key,而value则都是同一个Object
对象(该对象我们用不上) ; 
   HashMap底层维护一个数组,我们向 HashMap中所放置的对象实际上是存储在该数
组当中; 
   当向 HashMap 中 put 一对键值时,它会根据 key 的 hashCode 值计算出一个位置,
该位置就是此对象准备往数组中存放的位置。

 

vector 跟 arraylist 差不多 最大的区别就是在多线程的时候 vector是同步的

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值