Collection List Set Map接口区别
接口储存一组 对象
Collection 不唯一 无序
List 不唯一 有序(插入顺序)
Set 唯一 无序
Map 键值对象 Key到value的映射
ArrayList 和LinkedList 异同之处和应用
相同点:
- 数据特征相同:
类中数据可重复,插入有序,可以有多个null值 - 继承关系相同:
均直接或间接继承了AbstractList类,并实现了List接口
不同点:
- 底层数据结构不同:
ArrayList底层数据结构是数组,LinkedList底层数据结构是双向链表 - 实现方法不同:
因为LinkedList继承了Deque接口,所以LinkedList还实现了Deque接口的特有方法。 - 操作效率不同:
ArrayList查询、修改的效率高,增加、删除的效率较低
LinkedList增加、删除的效率高,查询、修改的效率较低
应用场景不同:
- ArrayList适用于查询量大,增删频率较低的场景
- LinkedList适用于增删量较大,查询频率较低的场景
一般默认遍历方式不同:
- ArrayList一般用for循环遍历
- LinkedList一般用迭代器遍历
- 因为ArrayList用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快
遍历集合方法
//一、List集合
List<String> list = new ArrayList<>();
list.add("henrly");
list.add("nancy");
list.add("lucy");
list.add("jeacy");
//遍历List集合
//1.使用for循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//2.使用迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
//3.使用增强for循环
for (String l : list) {
System.out.println(l);
}
//二、Set集合
Set<Integer> set = new TreeSet<>();
set.add(111);
set.add(222);
set.add(333);
set.add(444);
//遍历Set集合
//Set集合无索引,所以无法使用for循环遍历
//1.使用迭代器
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
//2.使用增强for循环
for (Integer i : set) {
System.out.println(i);
}
//三、Map集合
HashMap<Integer, String> hmap = new HashMap<>();
hmap.put(17, "h_nancy");
hmap.put(18, "h_jerry");
hmap.put(10, "h_lucy");
hmap.put(12, "h_henrly");
TreeMap<Integer, String> map = new TreeMap<>();
map.put(17, "nancy");
map.put(18, "jerry");
map.put(10, "lucy");
map.put(12, "henrly");
//遍历HashMap集合
//Map集合的遍历使用keySet和entrySet
//1.使用keySet
for (Integer key : hmap.keySet()) {
System.out.println(key + "----" + hmap.get(key));
}
System.out.println("------------------------------------------------");
//2.使用entrySet
for (Map.Entry<Integer, String> entry : hmap.entrySet()) {
System.out.println(entry);
}
//遍历HashMap集合
//Map集合的遍历使用keySet和entrySet
//1.使用keySet
for (Integer key : map.keySet()) {
System.out.println(key + "----" + hmap.get(key));
}
System.out.println("------------------------------------------------");
//2.使用entrySet
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "---" + entry.getValue());
}