集合(list,Map,HashMap,TreeMap)
Q1:list集合的应用:
package com.zhangyuwei.collection; import java.util.ArrayList; import java.util.List; public class test1 { public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); list.add(1);list.add(2);list.add(3); System.out.println("长度:"+list.size()); list.remove(0); System.out.println("长度:"+list.size()); list.clear(); System.out.println("长度:"+list.size()); } }
Q2:ArrayList应用
package com.zhangyuwei.collection; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; public class test2 { public static void main(String[] args) { ArrayList<String> arrayList=new ArrayList<String>(); arrayList.add("Tom"); arrayList.add("Jerry"); arrayList.add("Micky"); //使用iterator遍历元素 Show(arrayList); System.out.println("-----------------------"); System.out.println(arrayList.get(1)); System.out.println("-----------------------"); arrayList.add(1,"ZhangSan"); System.out.println(arrayList.get(1)); System.out.println("---------添加一个集合--------------"); ArrayList<String> arrayList1=new ArrayList<String>(); arrayList1.add("ZhangYuWei"); arrayList.addAll(arrayList1); System.out.println("---------输出加入集合后的值--------------"); Show(arrayList); System.out.println("--------判断是否包含某个元素---------------"); if(arrayList.contains("Tom")){ System.out.println("Tom is included in the Arraylist collection"); } System.out.println("------一种新的元素,这个集合支持一些新的特性-----------------------"); LinkedList<String> linkedLis=new LinkedList<String>(); linkedLis.addAll(arrayList); /*集合中设置值*/ linkedLis.set(0,"LunXun"); System.out.println(linkedLis.get(1)); System.out.println("---------获得第一个元素----------------------"); System.out.println(linkedLis.getFirst()); System.out.println("---------获得最后一个元素----------------------"); System.out.println(linkedLis.getLast()); System.out.println("---------获取并移除第一个元素----------------------"); System.out.println(linkedLis.pollFirst()); System.out.println(linkedLis.getFirst()); System.out.println("---------获取但不移除第一个元素----------------------"); System.out.println(linkedLis.peekFirst()); System.out.println(linkedLis.getFirst()); } public static void Show(ArrayList<String> arrayList){ Iterator iterator=arrayList.iterator(); while (iterator.hasNext()){ //获得值 Object value=iterator.next(); System.out.println(value); } } }
Q3:HashMap应用
package com.zhangyuwei.collection; import java.util.*; public class test3 { public static void main(String[] args) { HashMap<String,Object> hashMap=new HashMap<String, Object>(); // 向Map中添加元素 hashMap.put("Tom", 26); hashMap.put("Jack", 18); hashMap.put("Micky", 17); hashMap.put("Kate", 15); System.out.println("---------根据key值获取value---------------"); System.out.println(hashMap.get("Tom")); System.out.println("--------------移除--------------------"); hashMap.remove("Tom"); System.out.println("-----------根据key进行判断-------------------"); if(hashMap.containsKey("Tom")){ System.out.println("Tom is included in the hashmap"); } System.out.println("-------判断HashMap是否为空------------"); if(!hashMap.isEmpty()){ System.out.println(hashMap.size()); } System.out.println("-----------获取key的集合---------------"); for(String item:hashMap.keySet()){ System.out.println(item); } System.out.println("-----------获取value的集合---------------"); TreeMap<String, Object> treeMap = new TreeMap<String, Object>(); /*将HashMap集合加入到TreeMap中*/ treeMap.putAll(hashMap); System.out.println("----------输出内容会按照key排序------------------"); for (Map.Entry<String,Object> entry:treeMap.entrySet()){ System.out.println("key:"+entry.getKey()+",value:"+entry.getValue()); } System.out.println("-------LinkHashMap-----------"); LinkedHashMap<String,Integer> linkedHashMap=new LinkedHashMap<String,Integer>(); // 向Map中添加元素 linkedHashMap.put("Tom", 26); linkedHashMap.put("Jack", 18); linkedHashMap.put("Micky", 17); linkedHashMap.put("Kate", 15); System.out.println("------保持了插入的顺序------------"); /*for (Map.Entry<String,Integer> entry:linkedHashMap.keySet()){ System.out.println("key:"+entry.getKey()+",value:"+entry.getValue()); }*/ System.out.println(linkedHashMap.get("Kate")); } }
Q4:set基础操作
List<Integer> list = new ArrayList<Integer>(); list.add(3); list.add(4); HashSet<Integer> hashSet = new HashSet<Integer>(); hashSet.add(1); hashSet.add(3); hashSet.add(2); hashSet.add(6); // 重复元素将不能被添加 hashSet.add(3); // 只要有元素被添加就返回true if (hashSet.addAll(list)) { System.out.println("Add success"); } // 判断是否存在某个集合 if (hashSet.containsAll(list)) { System.out.println("The hashSet is contain 3 and 4"); } Iterator<Integer> it = hashSet.iterator(); while (it.hasNext()) { System.out.print(it.next() + " "); // 1 2 3 4 6 // 看结果是被排序了,HashSet按照Hash函数排序,Integer值的HashCode就是其int值 } // 换转成数组 Object[] integers = hashSet.toArray(); for (int i = 0; i < integers.length; i++) { System.out.print((Integer) integers[i]); } //移除元素 hashSet.remove(3); TreeSet<String> treeSet = new TreeSet<String>(); treeSet.add("C"); treeSet.add("A"); treeSet.add("D"); treeSet.add("B"); for (Iterator<String> strIt = treeSet.iterator(); strIt.hasNext();) { System.out.print(strIt.next()); // ABCD 按照字母顺序 } LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>(); linkedHashSet.add("C"); linkedHashSet.add("A"); linkedHashSet.add("D"); linkedHashSet.add("B"); for (Iterator<String> linkedIt = linkedHashSet.iterator(); linkedIt .hasNext();) { System.out.print(linkedIt.next()); // CADB 按照插入顺序 }
说明:
1:TreeSet:基于TreeMap,生成一个总是处于排序状态的set,内部以TreeMap来实现。它是使用元素的自然顺序对元素进行排序,或者根据创建Set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
2:集合是数组的升级,长度是动态的,无需预定义
3:Collection 接口存储一组不唯一,无序的对象
4:Set 接口存储一组唯一,无序的对象
5:Map接口存储一组键值对象,提供key到value的映射,Key不允许重复
6:List 允许重复,有序
7:set 不允许重复,无序
8:map value可重复,key不可重复,无序
Q5:一个简单的应用实例:
1:DVD实体
package com.zhangyuwei.dvdSystem; public class DVD { public int id; public String name; public double price; public boolean isRent; public DVD(int id, String name, double price, boolean isRent) { this.id = id; this.name = name; this.price = price; this.isRent = isRent; } @Override public String toString() { return ("编号:"+this.id+"\t\t"+"名称:"+this.name+"\t\t"+"价格:"+this.price+"\t\t"+"借出:"+(this.isRent?"是":"否")); } }
2:DVDService
package com.zhangyuwei.dvdSystem; import java.util.HashMap; import java.util.Map; /*服务 DBD管理 DVD业务*/ public class DVDService { /**构造*/ public DVDService(){ init(); } /**DVD集合*/ public Map<Integer,DVD> map=new HashMap<Integer, DVD>(); public void init() { DVD d1 = new DVD(2017001, "功夫", 17.3, true); DVD d2 = new DVD(2017002, "寒战", 25.6, false); DVD d3 = new DVD(2017003, "超体", 11.9, true); DVD d4 = new DVD(2017004, "异型", 88.8, false); DVD d5 = new DVD(2017005, "龙猫", 64.1, true); map.put(d1.id,d1);map.put(d2.id,d2);map.put(d3.id,d3); map.put(d4.id,d4);map.put(d5.id,d5); } /**添加DVD*/ public void addDVD(DVD dvd){ map.put(dvd.id,dvd); } /*删除DVD*/ public void delDVD(int id){ map.remove(id); } /**显示DVD*/ public void showDVD(){ for(Map.Entry<Integer,DVD> entry:map.entrySet()){ System.out.println(entry.getValue().toString()); } } /**修改DVD借出状态*/ public void modify(int id,boolean isRend){ DVD dvd=map.get(id); dvd.isRent=isRend; } }
3:客户端(test)(DVDClient)
package com.zhangyuwei.dvdSystem; public class DVDClient { public static void main(String[] args) { DVDService dvdService=new DVDService(); dvdService.showDVD(); System.out.println("-----------------------"); dvdService.modify(2017004,true); dvdService.showDVD(); System.out.println("-----------------------"); dvdService.delDVD(2017004); dvdService.showDVD(); } }
结果:
zywds