当前位置: 首页 > wzjs >正文

公司网站昆明市网站推广

公司网站,昆明市网站推广,阜阳市城乡建设网站,php彩票网站建设教程Java 集合框架(Java Collections Framework,JCF)是 Java 语言中用于存储、操作和管理数据的标准库。它提供了一组通用的接口、类和方法,使开发者能够高效地操作不同类型的数据集合。 本文将结合 Java 集合框架类图,介…

Java 集合框架(Java Collections Framework,JCF)是 Java 语言中用于存储、操作和管理数据的标准库。它提供了一组通用的接口、类和方法,使开发者能够高效地操作不同类型的数据集合。

本文将结合 Java 集合框架类图,介绍集合框架的整体架构,并对各个集合类的特性、适用场景及优缺点进行详细分析。

1. Java 集合框架概览

Java 集合框架主要分为 CollectionMap 两大类。

  • Collection(集合):用于存储一组对象,继承自 Iterable,包括 ListSet 等子接口。

  • Map(映射):用于存储键值对(key-value),不属于 Collection 接口,但同样是集合框架的一部分,如 HashMapTreeMap 等。

2. Collection 体系

Collection 是 Java 集合框架的核心接口,它继承了 Iterable,允许集合中的元素进行迭代(如 for-each 循环)。

Collection 主要分为 List 和 Set 两大类:

Collection 是 Java 集合框架的核心接口,它继承了 Iterable,允许集合中的元素进行迭代(如 for-each 循环)。

Collection 主要分为 List 和 Set 两大类:

2.1 List(列表)

List 接口表示有序集合,允许元素重复,支持索引访问。

List 实现类特点

  • ArrayList:基于动态数组,查找快(O(1)),插入删除慢(O(n))。

  • LinkedList:基于双向链表,插入删除快(O(1)),查找慢(O(n))。

  • Vector:类似 ArrayList,但线程安全(所有方法都使用 synchronized 进行同步)。

 实例:
ArrayList

package List_;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;/*** @author lay* @version 1.0**/
public class List_exercise_ {@SuppressWarnings("all")public static void main(String[] args) {List arrayList = new ArrayList();for (int i = 0; i < 12; i++) {arrayList.add("小黄" + i);}//第二个位置插入元素"行书评教育",通过相应的方法,add()arrayList.add(2,"行书评教育");System.out.println("插入后数= "+arrayList);Object o = arrayList.get(5);System.out.println("获得的元素 = " +o +o.getClass());arrayList.remove(6);System.out.println("删除后的list:= "+ arrayList);arrayList.set(7,"小米");System.out.println("修改后的元素为:=" +arrayList);Iterator iterator = arrayList.iterator();//        while (iterator.hasNext()) {
//            Object next =  iterator.next();
//            System.out.print(next);
//        }//        for (int i = 0; i < arrayList.size(); i++) {
//            Object o1 = arrayList.get(i);
//            System.out.print(o1);
//        }//for (Object object :arrayList) {System.out.println(object);}}
}

 LinkedList:

package Collection_;import java.util.Iterator;
import java.util.LinkedList;/*** @author lay* @version 1.0**/
public class LinkedList_CRUD {public static void main(String[] args) {LinkedList linkedList = new LinkedList();linkedList.add(1);linkedList.add(2);System.out.println(linkedList);linkedList.remove();System.out.println(linkedList);Iterator iterator = linkedList.iterator();while (iterator.hasNext()) {Object o =  iterator.next();System.out.println(o);}}
}

 Vector:

package Collection_;import java.util.List;
import java.util.Vector;/*** @author lay* @version 1.0**/
public class Vector_Detail {public static void main(String[] args) {Vector vector = new Vector();
//        Vector vector = new Vector(8);for (int i = 0; i < 10; i++) {vector.add(i);}vector.add(100);System.out.println("vector=" + vector);}
}

2.2 Set(集合)

Set 接口表示无序集合,不允许重复元素。

Set 实现类特点

  • HashSet:基于 HashMap 实现,元素无序,插入、删除、查找时间复杂度均为 O(1)。

  • TreeSet:基于红黑树(TreeMap)实现,元素有序(默认升序,可自定义 Comparator 规则),插入、删除、查找复杂度 O(log n)。

实例:
HashSet

package Set_;import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;/*** @author lay* @version 1.0**/
public class Set_Methods_ {@SuppressWarnings("all")public static void main(String[] args) {Set set = new HashSet();//以Set接口的实现类hashsetset.add("sdfa");set.add("john");set.add("lucy");set.add("john");//重复set.add("jack");set.add("hsp");set.add("mary");set.add(null);//
//        System.out.println(set);
//        for (int i = 0; i < 10; i++) {
//            System.out.println(set);
//        }//遍历Iterator iterator = set.iterator();while (iterator.hasNext()) {Object o =  iterator.next();System.out.println(o);}set.remove(null);for (Object o :set) {System.out.println(o);}}
}

 TreeSet

package Collection_;import java.util.Comparator;
import java.util.TreeSet;/*** @author lay* @version 1.0**/
@SuppressWarnings("all")
public class TreeSet_ {public static void main(String[] args) {TreeSet treeSet = new TreeSet();treeSet.add(145);treeSet.add(45);treeSet.add(5);treeSet.add(741);System.out.println(treeSet);//无参构造器无序//使用匿名内部类,TreeSet treeSet1 = new TreeSet(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {//向下转型
//                return ((String) o1).compareTo((String) o2);return ((String) o1).length()-((String) o2).length();}});treeSet1.add("Z");treeSet1.add("Dse");treeSet1.add("Sse");treeSet1.add("Wwefwa");treeSet1.add("Wasefefe");System.out.println(treeSet1);}
}

3. Map 体系

Map 接口用于存储键值对(key-value),key 不能重复,但 value 可以重复。

Map 实现类特点

  • HashMap:基于哈希表,默认 key 无序,插入、删除、查找 O(1)。

  • LinkedHashMap:继承 HashMap,但维护 key 的插入顺序,遍历时按插入顺序输出。

  • TreeMap:基于红黑树,key 有序,查找 O(log n)。

  • HashtableHashMap线程安全版本,但效率较低(同步方法降低并发性能)。

  • Properties:继承自 Hashtable,专门用于配置文件key-value 均为字符串)。

实例用法:
 

TreeMap

package Map_;import java.util.Comparator;
import java.util.TreeMap;/*** @author lay* @version 1.0**/
public class Tree_Map {public static void main(String[] args) {
//        TreeMap treeMap = new TreeMap();//默认构造器无序TreeMap treeMap = new TreeMap(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {
//                return ((String) o1).compareTo((String) o2);//按字符顺序排序return ((String) o1).length() -((String) o2).length();//按字符顺序排序}});treeMap.put("ada","123");treeMap.put("eqr","3");treeMap.put("zrr","13");treeMap.put("rhth","1");System.out.println(treeMap);}
}

Hashtable

package Map_;import java.util.Hashtable;/*** @author lay* @version 1.0**/
@SuppressWarnings("all")
public class Hashtable_ {public static void main(String[] args) {//1. Properties 继承 Hashtable
//2. 可以通过 k-v 存放数据,当然 key 和 value 不能为 null
//增加Hashtable properties = new Hashtable();
//properties.put(null, "abc");//抛出 空指针异常
//properties.put("abc", null); //抛出 空指针异常properties.put("john", 100);//k-vproperties.put("lucy", 100);properties.put("lucsdfy", 100);properties.put("ludsfwerwcy", 100);properties.put("lerucy", 100);properties.put("luercy", 100);properties.put("lucwery", 100);properties.put("wr", 100);properties.put("lweic", 100);properties.put("lic", 88);//如果有相同的 key , value 被替换System.out.println("properties=" + properties);}
}

Properties

package Map_;import java.util.Properties;/*** @author lay* @version 1.0**/
public class Properties_ {public static void main(String[] args) {Properties properties = new Properties();
//properties.put(null, "abc");//抛出 空指针异常
//properties.put("abc", null); //抛出 空指针异常properties.put("john", 100);//k-vproperties.put("lucy", 100);properties.put("lic", 100);properties.put("lic", 88);//如果有相同的 key , value 被替换,也是修改System.out.println("properties=" + properties);System.out.println(properties.get("lic"));properties.remove("lic");System.out.println(properties);}
}

 4. List、Set、Map 的对比总结

5. 线程安全性

  • 非线程安全ArrayListLinkedListHashMapHashSet

  • 线程安全VectorHashtableProperties

  • 加锁实现线程安全Collections.synchronizedList(new ArrayList<>())

6. 选择合适的数据结构

7. 结论

Java 集合框架提供了丰富的数据结构,以满足不同的开发需求。

  • List 适用于有序、允许重复的场景,如 ArrayList 适合快速查找LinkedList 适合频繁插入删除

  • Set 适用于去重的场景,如 HashSet 去重但无序TreeSet 去重且有序

  • Map 适用于键值对存储HashMap 查询快但无序TreeMap 查询稍慢但有序LinkedHashMap 维护插入顺序

  • 线程安全的集合类(如 VectorHashtable)在现代并发编程中较少使用,建议使用 ConcurrentHashMap 等更优方案。


文章转载自:

http://VJ0ha9lF.pxwzk.cn
http://Vy4vNJzL.pxwzk.cn
http://FLVqO3FT.pxwzk.cn
http://JS3wb3PM.pxwzk.cn
http://9kGirpVb.pxwzk.cn
http://1yuS4etL.pxwzk.cn
http://BgFmxije.pxwzk.cn
http://rljG7Khf.pxwzk.cn
http://MRpppVNS.pxwzk.cn
http://Iw2qESb0.pxwzk.cn
http://Q9n61V4W.pxwzk.cn
http://7NZg3e94.pxwzk.cn
http://EJLbPAhw.pxwzk.cn
http://gw5tloSw.pxwzk.cn
http://5omp2nt6.pxwzk.cn
http://xxixZmlZ.pxwzk.cn
http://tQ2vHVA2.pxwzk.cn
http://P9O1Q8mS.pxwzk.cn
http://flo5Tr9c.pxwzk.cn
http://zpP4PQvu.pxwzk.cn
http://72dYQodi.pxwzk.cn
http://x1nf8H5O.pxwzk.cn
http://74dqKBrK.pxwzk.cn
http://zTHq3M0z.pxwzk.cn
http://1ynUsDPv.pxwzk.cn
http://X13p6OWv.pxwzk.cn
http://I7lXhLsw.pxwzk.cn
http://M28f039m.pxwzk.cn
http://p2IQ1oHM.pxwzk.cn
http://BQtkVTlP.pxwzk.cn
http://www.dtcms.com/wzjs/622038.html

相关文章:

  • 手机网站下拉列表seo网站导航建设技巧
  • 徐州建设网站价格手机版html编辑软件
  • 网站的源码佛山专业外贸网站建设
  • 和幼儿做网站爱哔哩哔哩网页版在线观看
  • 做图书馆网站简单电商平台开发设计
  • 做网站从什么做起广西壮族自治区行政执法人员网络培训系统
  • 建设银行网站如何修改账单地址网络文化经营许可证价格
  • 网站建设服务器网站建设方案如何写
  • 北京营销型网站建设培训班国内国际时事写实记录50字配图片
  • 在线crm在线oa免费观看郑州百度搜索优化
  • 制作彩票网站需要多少钱北京律师24小时电话
  • 厦门seo网站关键词优推广wordpress安装出问题
  • 外贸网站开发推荐网络管理专业
  • 淘宝建设网站的目的是什么wordpress 图床 转移
  • 东莞如何建设网站制作平台网页美工设计photoshop 规划教材
  • 网站维护一般都是维护什么网页什么设计
  • 如何创作网站wordpress网盘搜索引擎
  • cms网站是什么行业网址大全
  • 网站被管理员权限深圳营销型网站费用
  • 商务网站建设规划心得贵州两学一做教育网站
  • 电子商务网站建设ppt模板下载郑州建设网站有哪些
  • 微网站在哪建微信模板图片
  • 网页广告怎么投放seo关键词优化费用
  • 旅游攻略网站开发背景做网站素材在哪里找
  • 网站的建设背景商标购买
  • 行业门户网站建设方案书展示网站建设的ppt
  • 上海外贸建站企业网站开发到上线的视频
  • 大型网站建设网站推广营销型网站的付费推广渠道
  • 常州市网站建设软件外包服务是什么意思
  • 做淘宝客怎么做官方网站网站建设分为什么