import java.util.ArrayList;
import java.util.List;
/*Collection集合有两个子接口
* 1,,List接口 :有序,可包含重复元素
* List集合有两个特有方法 1,ListIterator listIterator()可以用迭代器来调用add方法添加元素 。2,Object get(index)取元素的特有方法,其他集合只能使用迭代器去元素
- ListIterator 比 Iterator迭代器要多出很多方法!!!!!!!
- 1.1 ListArray集合 特点 :内部以数组的结构 存储元素,适合用来查询元素,所以查找元素的时候用这个集合
- 1.2 LinkedList集合 特点: 内部以链表的结构来存储元素 适合增删元素 ,增删元素的时候用此集合
* 2, Set接口 : 不包含重复元素 ,他的方法与Collction的方法基本一样,所以他取元素的方法只有一个,那就是Iterator迭代器
-
2.1 HashSet集合,无序, 内部存储结构是哈希表,其实也是把元素存在类似数组的集合里。
-
该集合查找速度非常快,因为每存储的元素,都要调用自动自己的hashCode()方法,计算出自己的哈希值,通过对自己的哈希值操作,得到存储的位子。
-
如果存的元素的哈希值相同,就会调用equals()方法比较两个元素的内容是否 完全 相同,如果不同,就会存储,也会存储在与哈希值相同的元素的地方。
-
因为不能存储相同一模一样的元素,所以当我们存储元素的时候,最好写上自己的hashCode()方法和equals()方法
-
如果没有重写,继承的是Object的方法,那么也能存储相同的元素,这是不应该发生的,因为HashSet不存储相同的元素。
-
2.1.1 HashSet有一个可以有序输出的子类,是LinkedHashSet
-
LinkendHashSet内部的存储结构是哈希表和链表,存进去的什么顺序,取出来的就是什么顺序
-
2.2 TreeSet类
-
List集合的特有方法:
-
增加:
-
void add(index,obj)在指定位子增加元素
-
void addAll(index,coll)指定位子插入集合
-
删除:
-
Object remove(index)删除指定位子的元素 注意!!!!返回的是被删除的元素!!!!!!!!!!!!!!!
-
修改:
-
Object set(index,obj)修改指定位子的元素 注意!!!!!返回的是被修改的元素!!!!!!!!!
-
获取:比较重要。也是只有List集合才有的方法,其他集合去元素只能使用Iterator()方法!!!
-
Object get(index)获取指定位子的元素!!
-
int indexOf(obj)获取元素的位子
-
int lastIndexOf(obj)
-
*/
public class ListDemo {public static void main(String[] args) {
// TODO Auto-generated method stub
/*容易出错的地方:
* List list = new ArrayList();
* list.add(“abc1”);
* list.add(“abc2”);
* list.add(“abc3”);
* Iterator it = list.iterator();此时迭代器已经读取了元素
* while(it.hasNext()){
* Object obj = it.next();
* if(obj.equals(“abc2”))
* { list.add(“abc9”);}而这里又添加元素,此时的迭代器并不知道,所以会报错
* syso(obj);
* }
* syso(list);
* 没有答案,会报错,因为集合和迭代器同时在操作元素
*
* 那么如何更改才可以实现呢添加元素呢?既然不能同时操作,那就让其中一个操作 ,,,这里就要用到List集合 特有 的 迭代器 : ListIterator listIterator();该迭代器是List集合特有
* ListIterator it = list.listIterator();这里修改 , 用这个迭代器
* it.add(“abc9”);
* 以上是修改的两处!!!
* 这样就不会报错了!!!
* 答案是:[abc1,abc2,abc9,abc3]
* */}
}