List和Set区别
-
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
-
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
-
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
另:
List遍历
1 public static void main( String[] args ){ 2 3 List<String> list=new ArrayList<String>(); 4 list.add("Hello"); 5 list.add("World"); 6 list.add("HAHAHHAHAHHA"); 7 8 //第一种遍历方法使用foreach遍历List 9 for(String str :list){ 10 System.out.println(str); 11 } 12 13 //第二种遍历,把链表变为数组相关的内容进行遍历 14 String[] stringArray=new String[list.size()]; 15 list.toArray(stringArray); 16 for(int i=0;i<stringArray.length;i++){ 17 System.out.println(stringArray[i]); 18 19 } 20 21 //第三种遍历 使用迭代器进行相关遍历 22 Iterator<String> ite=list.iterator(); 23 while(ite.hasNext()){ 24 System.out.println(ite.next()); 25 } 26 }
Map遍历
1 public static void main(String[] args) { 2 3 Map<String,String> map=new HashMap<String,String>(); 4 map.put("1", "value1"); 5 map.put("2", "value2"); 6 map.put("3", "value3"); 7 8 //第一种:普遍使用,二次取值 通过Map.KeySet遍历key和value 9 System.out.println("通过Map.keySet遍历key和value:"); 10 for(String key:map.keySet()){ 11 System.out.println("key="+key+" value="+map.get(key)); 12 } 13 14 //第二种 15 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); 16 Iterator<Map.Entry<String,String>> it=map.entrySet().iterator(); 17 while(it.hasNext()){ 18 Map.Entry<String, String> entry=it.next(); 19 System.out.println("value="+entry.getKey()+" and value="+entry.getValue()); 20 } 21 22 //第三种:推荐,尤其是容量大时 23 System.out.println("通过Map.entrySet遍历key和value"); 24 for (Map.Entry<String, String> entry : map.entrySet()) { 25 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); 26 } 27 28 //第四种 29 System.out.println("不能获取key,只能获取value"); 30 for(String str:map.values()){ 31 System.out.println(str); 32 } 33 }