Java笔记-Collection集合
Collection集合
List
List:有序,可重复
List结构中具有的方法:
- 增: add(E e);add(int index,E e);
- 删: remove(Object obj);remove(int index);
- 改: set(int index,E e);
- 查: get(int index);
- 其他:
size(),clear(),contains(Object obj),toArray()
iterator();isEmpty()
-
ArrayList:底层由数组实现,查询快,增删慢
ArrayList方法基本和List中定义的一模一样 -
LinkedList:底层由链表实现,查询慢,增删快,可用于实现栈和队列。LinkedList除了和List接口中一样的方法之外,LinkedList提供了大量首末位操作的方法
- 首末位增
void addFirst(E e);
void addLast(E e); - 首末位删
E removeFirst();//删除首个元素,返回被删除的元素
E removeLast();//删除尾部元素,返回被删除的元素 - 首末位查
E getFirst();
E getLast(); - stack栈操作
E pop();
void push(E e); - 首次和最后一次出现元素操作
boolean removeFirstOccurrence(Object o)
从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)
boolean removeLastOccurrence(Object o)
从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)
- Vector:不常用,和ArrayList类似,但是Vector的空间增长是100%,ArrayList是50%。Vector是线程同步的,即一个时刻只有一个线程访问Vector,所以Vector访问速度比ArrayList。
Set
set:无序,唯一
HashSet:底层是哈希表+红黑树实现,无索引,不可以存储重复元素,存取无序
LinkedHashSet:底层是哈希表+链表实现,无索引,不可以储存重复元素,可以保证存取顺序
TreeSet:底层是二叉树实现,一般用于排序
集合接口:继承自Collection
List:元素有序,允许存储重复元素,有索引(可以使用for循环遍历)
Set:不允许有重复元素,没有索引(不能使用for循环遍历)
增强for循环
for (Integer e : linkedList)
{
System.out.println(e);
}
Iterator迭代器
迭代器的使用:
1.使用集合中的方法ierator()获取迭代器的实现类对象,使用Iterator类接受构造对象
2.使用Iterator的hasnext()方法判断是否有下一个元素
3.使用Iterator的next()方法取出下一个元素
public class test01 {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("hello");
coll.add("you");
Iterator<String> it =coll.iterator();
System.out.println(it.next());
//使用迭代器遍历结合
while(it.hasNext()){
String e = it.next();
System.out.printl(e);
}
}
}
Map集合
map是将ket映射到value的集合,key不可以重复,value可以重复
常用方法:put(K,V),返回V remove(),返回被删除的值
遍历方法:
1.keySet():取出map中所有的key存放到set集合中,遍历set使用get(key)获得值
2.entrySet():在map中存在Entry对象(键值对对象)用于记录键和值,使用map.entrySet()把Map集合中的Entry对象取出存到Set中,再遍历set时使用Entry对象的getkey()和getvalue()方法获取键与值
Map<String,String>map=new hashmap<>()
String v1 = map.put("李晨","范冰冰");
String V2 = map.remove("李晨");
//map遍历方法一:使用keyset遍历
Set<String> set=map.ketset();
Iterator<string> it= set.iterator();
while(it.hasNext()){
String key =map.getkey();
Integer value =map.get(key);
System.out.print(key+value);
}
//使用增强for遍历set
for(String key:map.keyset(){
.....
}
//map遍历方法二:使用Entry遍历
Set<Map.Entry<String,Integer>> set = map.entrySet();
Interator it = set.iterator();
String key =entry.getkey();
String value = entry.getvalue();