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

你需要网站建设wordpress 进入

你需要网站建设,wordpress 进入,seo关键词选择及优化,无锡做网站选优易信Java 集合框架可以分为两条大的支线#xff1a; ①、Collection#xff0c;主要由 List、Set、Queue 组成#xff1a; List 代表有序、可重复的集合#xff0c;典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedList#xff1b;Set 代表无序、不可重复的集… Java 集合框架可以分为两条大的支线 ①、Collection主要由 List、Set、Queue 组成 List 代表有序、可重复的集合典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedListSet 代表无序、不可重复的集合典型代表就是 HashSet 和 TreeSetQueue 代表队列典型代表就是双端队列 ​​​​​​​ArrayDeque以及优先级队列  PriorityQueue。 ②、Map代表键值对的集合典型代表就是HashMap 一、List List 的特点是存取有序可以存放重复的元素可以用下标对元素进行操作。 1ArrayList 先来一段 ArrayList 的增删改查学会用。 // 创建一个集合 ArrayListString list new ArrayListString(); // 添加元素 list. Add(aa); list. Add(bb); list. Add(ccc);// 遍历集合 for 循环 for (int i 0; i list.size(); i) {String s list. Get(i);System.out.println(s); } // 遍历集合 for each for (String s : list) {System.out.println(s); }// 删除元素 list.remove(1); // 遍历集合 for (String s : list) {System.out.println(s); }// 修改元素 list. Set(1, aaa); // 遍历集合 for (String s : list) {System.out.println(s); } 简单介绍一下 ArrayList 的特征 ArrayList 是由数组实现的支持随机存取也就是可以通过下标直接存取元素从尾部插入和删除元素会比较快捷从中间插入和删除元素会比较低效因为涉及到数组元素的复制和移动如果内部数组的容量不足时会自动扩容因此当元素非常庞大的时候效率会比较低。 (2) LinkedList 同样先来一段 LinkedList 的增删改查和 ArrayList 几乎没什么差别。 // 创建一个集合 LinkedListString list new LinkedListString(); // 添加元素 list. Add(aa); list. Add(bb); list. Add(ccc);// 遍历集合 for 循环 for (int i 0; i list.size(); i) {String s list.get(i);System.out.println(s); } // 遍历集合 for each for (String s : list) {System.out.println(s); }// 删除元素 list.remove(1); // 遍历集合 for (String s : list) {System.out.println(s); }// 修改元素 list. Set(1, aaa); // 遍历集合 for (String s : list) {System.out.println(s); } 不过LinkedList 和 ArrayList 仍然有较大的不同 LinkedList 是由双向链表实现的不支持随机存取只能从一端开始遍历直到找到需要的元素后返回任意位置插入和删除元素都很方便因为只需要改变前一个节点和后一个节点的引用即可不像 ArrayList 那样需要复制和移动数组元素因为每个元素都存储了前一个和后一个节点的引用所以相对来说占用的内存空间会比 ArrayList 多一些。 (3) Vector 和 Stack List 的实现类还有一个 Vector是一个元老级的类比 ArrayList 出现得更早。ArrayList 和 Vector 非常相似只不过 Vector 是线程安全的像 get、set、add 这些方法都加了 synchronized 关键字就导致执行效率会比较低所以现在已经很少用了。 看一下 add 方法的源码 public synchronized boolean add(E e) {elementData[elementCount] e;return true; } 这种加了同步方法的类注定会被淘汰掉就像StringBuilder 取代 StringBuffer那样。JDK 源码也说了 如果不需要线程安全建议使用 ArrayList 代替 Vector。 Stack 是 Vector 的一个子类本质上也是由动态数组实现的只不过还实现了先进后出的功能在 get、set、add 方法的基础上追加了 pop「返回并移除栈顶的元素」、peek「只返回栈顶元素」等方法所以叫栈。 下面是这两个方法的源码增删改查我就不写了和 ArrayList 和 LinkedList 几乎一样。 public synchronized E pop() {E obj;int len size();obj peek();removeElementAt(len - 1);return obj; }public synchronized E peek() {int len size();if (len 0)throw new EmptyStackException();return elementAt(len - 1); } 不过由于 Stack 执行效率比较低方法上同样加了 synchronized 关键字就被双端队列 ArrayDeque 取代了. 二、Set Set 的特点是存取无序不可以存放重复的元素不可以用下标对元素进行操作和 List 有很多不同。 1HashSet HashSet 其实是由 HashMap 实现的只不过值由一个固定的 Object 对象填充而键用于操作。来简单看一下它的源码。 public class HashSetEextends AbstractSetEimplements SetE, Cloneable, java.io.Serializable {private transient HashMapE,Object map;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT new Object();public HashSet() {map new HashMap();}public boolean add(E e) {return map.put(e, PRESENT)null;}public boolean remove(Object o) {return map.remove(o)PRESENT;} } 实际开发中HashSet 并不常用比如如果我们需要按照顺序存储一组元素那么 ArrayList 和 LinkedList 可能更适合如果我们需要存储键值对并根据键进行查找那么 HashMap 可能更适合。 来一段增删改查体验一下 // 创建一个新的HashSet HashSetString set new HashSet();// 添加元素 set. Add(aa); set. Add(bb); set. Add(ccc);// 输出HashSet的元素个数 System.out.println(HashSet size: set.size()); // output: 3// 判断元素是否存在于HashSet中 boolean containsWanger set. Contains(bb); System.out.println(Does set contain bb? containsWanger); // output: true// 删除元素 boolean removeWanger set. Remove(bb); System.out.println(Removed bb? removeWanger); // output: true// 修改元素需要先删除后添加 Boolean removeChenmo set. Remove(aa); Boolean addBuChenmo set. Add(aaa); System.out.println(Modified set? (removeChenmo addBuChenmo)); // output: true// 输出修改后的HashSet System.out.println(HashSet after modification: set); // output: [ccc, aaa] HashSet 主要用于去重比如我们需要统计一篇文章中有多少个不重复的单词就可以使用 HashSet 来实现。 // 创建一个 HashSet 对象 HashSetString set new HashSet();// 添加元素 set. Add(aa); set. Add(bb); set. Add(ccc); set. Add(aa);// 输出 HashSet 的元素个数 System.out.println(HashSet size: set.size()); // output: 3// 遍历 HashSet for (String s : set) {System.out.println(s); } 从上面的例子可以看得出HashSet 会自动去重因为它是用 HashMap 实现的HashMap 的键是唯一的哈希值相同键的值会覆盖掉原来的值于是第二次 set.add(沉默) 的时候就覆盖了第一次的 set.add(aa)。 (2)LinkedHashSet LinkedHashSet 虽然继承自 HashSet其实是由 LinkedHashMap 实现的。 这是 LinkedHashSet 的无参构造方法 public LinkedHashSet() {super(16, .75f, true); } super 的意思是它将调用父类的 HashSet 的一个有参构造方法 HashSet(int initialCapacity, float loadFactor, boolean dummy) {map new LinkedHashMap(initialCapacity, loadFactor); } LinkedHashSet 的增删改查 LinkedHashSetString set new LinkedHashSet();// 添加元素 set. Add(aa); set. Add(bb); set. Add(ccc);// 删除元素 set. Remove(bb);// 修改元素 set. Remove(aa); set. Add(aaaaa);// 查找元素 Boolean hasChenQingYang set. Contains(ccc); System.out.println(set包含ccc吗 hasccc); 在以上代码中我们首先创建了一个 LinkedHashSet 对象然后使用 add 方法依次添加了三个元素aa、bb和ccc。接着我们使用 remove 方法删除了bb这个元素并使用 remove 和 add 方法修改了aa这个元素。最后我们使用 contains 方法查找了ccc这个元素是否存在于 set 中并打印了结果。 LinkedHashSet 是一种基于哈希表实现的 Set 接口它继承自 HashSet并且使用链表维护了元素的插入顺序。因此它既具有 HashSet 的快速查找、插入和删除操作的优点又可以维护元素的插入顺序。 (3)TreeSet 与 TreeMap 相似TreeSet 是一种基于红黑树实现的有序集合它实现了 SortedSet 接口可以自动对集合中的元素进行排序。按照键的自然顺序或指定的比较器顺序进行排序。 // 创建一个 TreeSet 对象 TreeSetString set new TreeSet();// 添加元素 set. Add(aa); set. Add(bb); set. Add(ccc); System.out.println(set); // 输出 [aa, bb, ccc]// 删除元素 set. Remove(bb); System.out.println(set); // 输出 [aa, ccc]// 修改元素TreeSet 中的元素不支持直接修改需要先删除再添加 set. Remove(ccc); set. Add(cbc); System.out.println(set); // 输出 [aa, cbc]// 查找元素 System.out.println(set. Contains(aa)); // 输出 true System.out.println(set. Contains(bb)); // 输出 false 需要注意的是TreeSet 不允许插入 null 元素否则会抛出 NullPointerException 异常。 总体上来说Set 集合不是关注的重点因为底层都是由 Map 实现的为什么要用 Map 实现呢 因为 Map 的键不允许重复、无序. 参考链接https://javabetter.cn/collection/gailan.html
http://www.dnsts.com.cn/news/258396.html

相关文章:

  • 重庆科技网站建设织梦cms网站搬家
  • 域名如何绑定网站网站域名申请程序
  • 建设工程信息发布网站网络运维是做什么的
  • 最专业的营销网站建设公司排名卖域名赚钱吗
  • pc网站建设的三大条件微分销平台登录
  • 金色金融公司网站源码阿里云 多个网站
  • 康定网站建设公司自己写的字体wordpress
  • 个人建设网站要钱吗wordpress 评论 样式
  • 西安网站漏洞郑州平台公司
  • 做app网站的软件有哪些内容吗二维码图片制作
  • 厦门建设网站哪家好百度自媒体平台
  • 建站哪个网站比较好html 网站建设中
  • 建站系统低价建站新闻资讯网站建设在淘宝怎么分类
  • cms 做网站天津市建设教育培训中心的网站
  • 去哪个网站做农产品推广织梦dedecms大气微电影网站模板
  • 高度重视部门网站建设2023网页游戏排行榜前十名
  • wordpress本地网站搭建整套课程国精产品w灬源码1688说明
  • 拍拍网的网站建设优质手机网站建设
  • 无锡市建设招标网站wordpress有中文官方版
  • 潍坊高密网站建设wordpress 内容编码错误
  • 梧州推广网站服务商平面设计概述
  • 企业网站导航代码企业图册设计
  • 影响网站排名重要因素成都各公司网站
  • 企业怎样做网站怎么看一个网站是否被k
  • 手机编程教学广州网站排名优化价格
  • 个人域名备案 网站名称wordpress淘点金插件
  • 一个简单的游戏网站建设做货源网站可以赚钱吗
  • 商务网站建设的步骤做虚拟网站要花多少钱
  • 如何设计网站布局邢台专业做网站
  • 网站开发公司经营范围怎么写什么是移动网站开发