一、Set和List的区别
- Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
- Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet> 。
- List可以动态增长,查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
二、与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
三、HashSet与HashMap的区别
四、ArrayList的几种遍历方式
import java.util.*; public class MyDemo { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Str1"); list.add("Str2"); list.add("Str3"); list.add("Str4"); // For-Each 遍历 for (String str : list) { System.out.println(str); } // 数组遍历 String[] strArray = new String[list.size()]; list.toArray(strArray); for(String str:strArray) { System.out.println(str); } // 迭代器遍历 Iterator<String> ite=list.iterator(); while(ite.hasNext()) { System.out.println(ite.next()); } } }
五、Map的遍历
import java.util.*; public class MyDemo { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); // keySet遍历 for (String key : map.keySet()) { System.out.println(key + "=" + map.get(key)); } // iterator遍历,此种意义不大,仅供参考 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println(entry.getKey() + "=" + entry.getValue()); } // entrySet遍历,推荐 for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey() + "=" + entry.getValue()); } // 直接输出值 for (String v : map.values()) { System.out.println(v); } } }
六、集合框架体系图,来源于runoob网站,感觉挺好的,忍不住就摘录过来:
七、以前写的 ,关于Java-Collections的相关文章,参考:
随笔分类 - Java-Collections
本文参考:
https://www.runoob.com/java/java-collections.html