导图社区 网站开发集类框架自学方案思维导图
网站开发集类框架自学方案,包括网站更新,历史背景,新合作伙伴,内部更新,集合类框架。可供大家学习参考~
编辑于2023-02-25 13:20:17 广东网站开发集合类框架自学方案思维导图
问题: 网站更新
我们的公司网站需要便捷的导航 全新的内容焕然一新的风格 以更好地反映我们的品牌
历史/背景
1999
创建
仅提供信息资讯
内部设计
2001
更新
启用电子商务
Frost Design平面设计
2002-2005
每年定期更新
内部设计
最终决定: Frost Design
虽然需要更多的成本 并可能花费更长的时间 但他们的可靠性和作品的高质量 使他们成为最佳选择
选择三: 新合作伙伴
Harold Schultz推荐
优势
相对实惠
周转快
缺陷
不知是否可靠
创作质量未知
可能需要艺术方面的指导
选择二: Frost Design
优势
可靠
艺术创造经验丰富
高品质的创作
缺陷
价格贵
耗时长
选择一: 内部更新
优势
最经济实惠
能够完全掌控
缺陷
缺乏资源
缺乏艺术性、创造性
集合类框架
Collection接口
List(有序可重复的)
²List接口:线性数据结构(只有一个前驱结点和一个后继结点):遍历下标
ArrayList,Vector,LinkedList的存储性能和特性: ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素, 它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储, 按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
ArrayList(数组形式存取)
package com.data; import java.util.ArrayList; import java.util.Iterator; importjava.util.List; publicclass ArrayApp { publicstaticvoid main(String args[]){ ArrayList list = newArrayList(); System.out.println("集合是否为空:"+list.isEmpty()); list.add("my"); list.add("name"); list.add("is "); list.add("lihaoran"); list.add("lihaoran"); System.out.println("iterator遍历:"); Iterator iter = list.iterator(); while (iter.hasNext()) { System.out.print(iter.next()+"\t"); } System.out.println(); System.out.println("由前向后输出"); for(int i=0;i System.out.print(list.get(i)+"\t"); } System.out.println(""); System.out.println("由后向前输出:"); for (int i =list.size()-1; i >=0; i--) { System.out.print(list.get(i)+"\t"); } System.out.println(""); System.out.println("以数组的形式输出"); String[] str=(String[]) list.toArray(new String[]{}); for (int i = 0; i length; i++) { System.out.print(str[i]+"\t"); } System.out.println(""); System.out.println("指定对象数组:"); Object[] obj = list.toArray(); for (int i = 0; i length; i++) { String s =(String)obj[i]; System.out.print(s+"\t"); } System.out.println(); System.out.println("lihaoran的位置:"+list.lastIndexOf("lihaoran")); System.out.println(list.contains("lihaoran")?"存在":"不存在"); System.out.println("集合是否为空:"+list.isEmpty()); } }
底层数组实现的,当实例化一个ArrayList是也相当实例化了一个数组 所以对元素的随即访问较快,而增加删除操作慢
ArrayList与Vector区别: ArrayList采用异步处理性能高,非线程安全 Vector采用同步处理性能低,线程安全
Vector(数组形式存取)
package com.data; import java.util.ArrayList; import java.util.Iterator; importjava.util.List; publicclass ArrayApp { publicstaticvoid main(String args[]){ Vector list = new Vector(); System.out.println("集合是否为空:"+list.isEmpty()); list.add("my"); list.add("name"); list.add("is "); list.add("lihaoran"); list.add("lihaoran"); System.out.println("iterator遍历:"); Iterator iter = list.iterator(); while (iter.hasNext()) { System.out.print(iter.next()+"\t"); } System.out.println(); System.out.println("由前向后输出"); for(int i=0;i System.out.print(list.get(i)+"\t"); } System.out.println(""); System.out.println("由后向前输出:"); for (int i =list.size()-1; i >=0; i--) { System.out.print(list.get(i)+"\t"); } System.out.println(""); System.out.println("以数组的形式输出"); String[] str=(String[]) list.toArray(new String[]{}); for (int i = 0; i length; i++) { System.out.print(str[i]+"\t"); } System.out.println(""); System.out.println("指定对象数组:"); Object[] obj = list.toArray(); for (int i = 0; i length; i++) { String s =(String)obj[i]; System.out.print(s+"\t"); } System.out.println(); System.out.println("lihaoran的位置:"+list.lastIndexOf("lihaoran")); System.out.println(list.contains("lihaoran")?"存在":"不存在"); System.out.println("集合是否为空:"+list.isEmpty()); } }
LinkList(链表形式存取)
import java.util.ArrayList ; import java.util.List ; import java.util.ListIterator ; public class ListIteratorDemo01{ public static void main(String argsp[]){ List all = new ArrayList() ; all.add("hello") ; all.add("_") ; all.add("world") ; ListIterator iter = all.listIterator() ; System.out.print("由前向后输出:") ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; } System.out.print("\n由后向前输出:") ; while(iter.hasPrevious()){ String str = iter.previous() ; System.out.print(str + "、") ; } } }; import java.util.ArrayList ; import java.util.List ; import java.util.ListIterator ; public class ListIteratorDemo02{ public static void main(String argsp[]){ List all = new ArrayList() ; all.add("hello") ; all.add("_") ; all.add("world") ; ListIterator iter = all.listIterator() ; System.out.print("由前向后输出:") ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; iter.set("LI - " + str) ; // 修改内容 } System.out.print("\n由后向前输出:") ; iter.add("LXH"); while(iter.hasPrevious()){ String str = iter.previous() ; System.out.print(str + "、") ; } } };
LinkedList 底层实现是一个双向链表,每一个结点都包含了前一个元素的引用和后一个元素的引用和结点值 所以对元素的随即访问很慢,而增删较快
Set(无序不可重复的)
²Set:无序今集;采用的是哈希算法:遍历的对象
HashSet(散列存取)
import java.util.HashSet ; import java.util.Set ; public class HashSetDemo01{ public static void main(String args[]){ Set allSet = new HashSet() ; allSet.add("A") ;// 增加内容 allSet.add("B") ;// 增加内容 allSet.add("C") ;// 增加内容 allSet.add("C") ;// 重复内容 allSet.add("C") ;// 重复内容 allSet.add("D") ;// 增加内容 allSet.add("E") ;// 增加内容 System.out.println(allSet) ; } };
hashCode()和equals()完成重复元素的判断
TreeSet(有序存取)
import java.util.TreeSet ; import java.util.Set ; public class TreeSetDemo01{ public static void main(String args[]){ Set allSet = new TreeSet() ; allSet.add("C") ;// 增加内容 allSet.add("C") ;// 重复内容 allSet.add("C") ;// 重复内容 allSet.add("D") ;// 增加内容 allSet.add("B") ;// 增加内容 allSet.add("A") ;// 增加内容 allSet.add("E") ;// 增加内容 System.out.println(allSet) ; } };
依靠Comparable接口完成排序
SortedSet
import java.util.SortedSet ; import java.util.TreeSet ; public class TreeSetDemo05{ public static void main(String args[]){ SortedSet allSet = new TreeSet() ; // allSet.add("A") ;// 增加内容 allSet.add("B") ;// 增加内容 allSet.add("C") ;// 增加内容 allSet.add("C") ;// 增加内容 allSet.add("C") ;// 增加内容 allSet.add("D") ;// 增加内容 allSet.add("E") ;// 增加内容 System.out.println("第一个元素:" + allSet.first()) ; System.out.println("最后一个元素:" + allSet.last()) ; System.out.println("headSet元素:" + allSet.headSet("C")) ; System.out.println("tailSet元素:" + allSet.tailSet("C")) ; System.out.println("subSet元素:" + allSet.subSet("B","D")) ; } };
排序
Map接口
HashMap
import java.util.HashMap ; import java.util.Map ; public class HashMapDemo01{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new HashMap() ; map.put("mldn","www.mldn.cn") ; // 增加内容 map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容 map.put("mldnjava","www.mldnjava.cn") ; // 增加内容 String val = map.get("mldn") ; // 根据key取出值 System.out.println("取出的内容是:" + val) ; } }; import java.util.HashMap ; import java.util.Map ; public class HashMapDemo02{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new HashMap() ; map.put("mldn","www.mldn.cn") ; // 增加内容 map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容 map.put("mldnjava","www.mldnjava.cn") ; // 增加内容 if(map.containsKey("mldn")){ // 判断key是否存在 System.out.println("搜索的key存在!") ; }else{ System.out.println("搜索的key不存在!") ; } if(map.containsValue("www.mldn.cn")){ // 判断value是否存在 System.out.println("搜索的value存在!") ; }else{ System.out.println("搜索的value不存在!") ; } } }; import java.util.HashMap ; import java.util.Map ; import java.util.Iterator ; import java.util.Set ; public class HashMapDemo03{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new HashMap() ; map.put("mldn","www.mldn.cn") ; // 增加内容 map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容 map.put("mldnjava","www.mldnjava.cn") ; // 增加内容 Set keys = map.keySet() ; // 得到全部的key Iterator iter = keys.iterator() ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; } } }; import java.util.HashMap ; import java.util.Map ; import java.util.Iterator ; import java.util.Collection ; public class HashMapDemo04{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new HashMap() ; map.put("mldn","www.mldn.cn") ; // 增加内容 map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容 map.put("mldnjava","www.mldnjava.cn") ; // 增加内容 Collection values = map.values() ; // 得到全部的value Iterator iter = values.iterator() ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; } } };
HashMap和Hashtable的区别 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
HashTable
import java.util.HashMap ; import java.util.Map ; import java.util.Set ; import java.util.Iterator ; import java.util.Collection ; public class HashtableDemo01{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new HashMap() ; map.put("mldn","www.mldn.cn") ; // 增加内容 map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容 map.put("mldnjava","www.mldnjava.cn") ; // 增加内容 System.out.print("全部的key:") ; Set keys = map.keySet() ; // 得到全部的key Iterator iter = keys.iterator() ; while(iter.hasNext()){ String str = iter.next() ; System.out.print(str + "、") ; } System.out.print("\n全部的value:") ; Collection values = map.values() ; // 得到全部的value Iterator iter2 = values.iterator() ; while(iter2.hasNext()){ String str = iter2.next() ; System.out.print(str + "、") ; } } };
TreeMap
import java.util.TreeMap ; import java.util.Map ; import java.util.Set ; import java.util.Iterator ; import java.util.Collection ; public class TreeMapDemo01{ public static void main(String args[]){ Map map = null; // 声明Map对象,其中key和value的类型为String map = new TreeMap() ; map.put("A、mldn","www.mldn.cn") ; // 增加内容 map.put("C、zhinangtuan","www.zhinangtuan.net.cn") ; // 增加内容 map.put("B、mldnjava","www.mldnjava.cn") ;// 增加内容 Set keys = map.keySet() ; // 得到全部的key Iterator iter = keys.iterator() ; while(iter.hasNext()){ String str = iter.next() ; System.out.println(str + " --> " + map.get(str)) ; // 取出内容 } } };
SortedMap
Collections接口(集合类的帮助类)
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
sort排序
import java.util.Collections ; import java.util.List ; import java.util.ArrayList ; import java.util.Iterator ; public class CollectionsDemo06{ public static void main(String args[]){ List all = new ArrayList() ; // 返回空的 List集合 Collections.addAll(all,"1、MLDN","2、LXH","3、mldnjava") ; Collections.addAll(all,"B、www.mldn.cn") ; Collections.addAll(all,"A、www.mldnjava.cn") ; System.out.println("排序之前的集合:" + all) ; Collections.sort(all) ; System.out.println("排序之后的集合:" + all) ; } };
binarySearch查找