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是同步的
?