迭代器遍历
List<String> list = new Arraylist<String>();
list.add("a");
Iterator iter = list.iterator();
while(iterator.hasNext()) {
String str = iter.next();
}
索引遍历
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
}
ArrayList和LinkedList的区别
ArrayList的底层是数组实现的,数组的每个单位地址是连续的,所以特点是查询、修改快,但是插入和删除元素时候会修改元素后面的所有元素,所以插入、删除慢
ArrayList的线程安全方案List list = Collections.synchornizedList(new ArrayList())
LinkedList的底层是链表实现的,链表的结构地址不连续,只是每个地址存有上链和下链的地址,所以增加、删除链的时候只会修改上链和下链记录的地址,不会修改全身,所以链表结构增加、删除快,但是因为地址不连续,所以查询、修改慢
LinkedList特有的方法
- 增加、删除首位元素List.addFirst()、List.removeFirst()、List.addLast()、List.removeLast()
- 查询首位元素List.getLast()、List.getFirst()
HashSet
- Set里面存储的元素不能重复,没有索引,存取顺序不一致。
- 遍历Set的方法,使用for each 循环,或迭代器遍历方式,但是因为没有索引,所以不能通过访问索引遍历
- 能使用迭代器遍历的容器都能用for each 遍历
for (int element:set)
System.out.println(element);
LinkdHashSet和HashSet的区别
- 两者都是Set,都存放不重复的一组数据
- LinkdHashSet底层是两边实现,所以可以保存存入数据时候的顺序,而HashSet是无序的
遍历map的方法
HashMap<> map = new HashMap<>();
Iterator iter = map.keySet().iterator() //Set()方法返回map中所有的key