听着金志文的夏洛特烦恼还有些忧伤,唉,女人的心情是你永远调不完的BUG~ 算了~
回头看着集合的结构框图蒙圈了,好几个版本,看的一个视频怎么介绍的就这么着吧,颜值不高的框图,理解万岁~
对集合的理解点到为止,Java这东西就是查库,用到哪里了查一查自然明了。
Collection 是Set List的父类,也就意味着Collection内所有的方法在Set List中都有,跟着打的用list做的小例子
package Com; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Queue; // Collection是set,list的父类,所有Colection有的方法,set,list都具备 public class main { public static void main_Colection(String[] args) { /*********说明add中添加的数据是对象******/ List list=new ArrayList(); list.add("123"); list.add("333"); list.add(2); // 在list没有指定类型的时候,自动拆箱封箱,2被封箱为一个对象,存到list中,类似于new Integer(2)。 list.add(new Integer(2)); System.out.println(list);// 输出结果 /***************************************/ /***********list(Colection)的常用的一些方法***********/ List<String> list2 =new ArrayList<String>(); list2.add("1"); list2.add("2"); list2.add(1,"demo"); // 指定位置添加 System.out.println(list2);//[1, demo, 2] System.out.println(list2.contains("2")); // 判断是否含有2这个元素 true System.out.println(list2.isEmpty()); // 判断list是否为空 false /*******************************************/ /****************迭代器和for循环进行循环遍历****************/ //有删除功能的集合,推荐使用迭代器 Iterator <String> Ite=list2.iterator(); //迭代器进行list遍历 while(Ite.hasNext())// 迭代器可以在遍历的同时,将数据进行删除 { // 迭代器删除只能使用迭代器的删除方法(是指针),不能使用list等集合的删除方法(是数组) String str=Ite.next(); if(str.equals("demo")) { Ite.remove(); } else System.out.println(str); } for(int i=0;i<list2.size();i++) // for 循环遍历删除时,使用集合的方式删除list2.remove(i); { // for循环删除时,特别需要注意最后一位是否已经删除,如果删除再调用会出现程序出错,有删除功能的集合,推荐使用迭代器 if(list2.get(i).equals("demo")) { list2.remove(i); } System.out.println(list2.get(i)); } /************************************************/ } }
package Com; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Vector; /** * * list 常用子类 * *ArrayList 非线程安全,速度快 *Vector 线程安全 速度慢 *LinkList 单相 双向链表 在首位添加元素执行速度较快 而ArrayList在插入或删除某个元素执行速度较快 * LinkList可以非常快的模拟堆栈(先进后出)和队列(先进先出) */ public class main2 { /** * @param args */ public static void main_list(String[] args) { /*ArrayList*/ ArrayList<String> Arr=new ArrayList<String>(); Arr.add("888"); /*Vector*/ Vector<String> Vec=new Vector<String>(); // 集合 Vec.add("123"); Vec.add("456"); Vec.add("789"); System.out.println(Vec); Iterator <String> Ite=Vec.iterator(); // vector 使用迭代器进行遍历 且可以删除 while(Ite.hasNext()) { System.out.println(Ite.next()); } // ListIterator<String> Ite2=Vec.listIterator(); // 可以输出前一个迭代值 Enumeration<String> enums=Vec.elements(); // vector 使用枚举进行遍历,不能删除元素 (不常用) while(enums.hasMoreElements()) { System.out.println(enums.nextElement()); } /*LinkedList*/ LinkedList<String> linklist=new LinkedList<String>(); linklist.add("1"); linklist.addFirst("0"); linklist.addLast("2"); linklist.get(0); System.out.println(linklist); } }
Set 的好处就是内部不能放两个相同的值,内部数据排序方式可以分为哈希排序(HashSet)和ASCII排序(TreeSet)
package Com; import java.util.HashSet; import java.util.TreeSet; /** * Set * HashSet 存入的数据按照哈希值进行排序 * TreeSet 按照ACSII进行排序 * */ public class main3 { /** * @param args */ public static void main_set(String[] args) { HashSet<String> set1=new HashSet<String>(); // 按照哈希值进行排序 set1.add("a"); set1.add("b"); set1.add("c"); System.out.println(set1); TreeSet<String> set2=new TreeSet<String>(); // 按照ACSII 排序 set2.add("a"); set2.add("b"); set2.add("c"); System.out.println(set2); } }
Map:
package Com; import java.util.HashMap; import java.util.Hashtable; import java.util.TreeMap; public class main4 { /** * map * HashMap 非线程安全 速度快 键值可以为空 键值根据哈希值进行排序 * HashTable 线程安全 速度慢 键值都不能为空 * TreeMap 根据Key进行排序 */ public static void main(String[] args) { /*map 的增删改查*/ /*HashMap*/ // 根据哈希值进行排序 HashMap <String,String> map=new HashMap<String,String>(); map.put("name", "zhangsan"); map.put("age","12"); // 添加一个元素 map.put("xx","xxx"); map.put("xx", "1233");//更改元素 map.remove("xx");// 删除元素 map.get("age"); // 查找一个元素 /*Hashtable*/ // 根据哈希值进行排序 Hashtable<String, String> map2=new Hashtable<String, String>(); map2.put("name", "zhangsan"); map2.put("age","12"); // 添加一个元素 /*TreeMap*/ // 根据ACSII 进行排序 TreeMap<String,String> map3=new TreeMap<String,String>(); map3.put("aa", "name"); map3.put("cc","sex"); map3.put("b", "age"); System.out.println(map3); } }