J2EE&集合框架&Map

这篇具有很好参考价值的文章主要介绍了J2EE&集合框架&Map。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.Map特点

1.无序,键值对,键不能重复,值可以重复

2.键重复则覆盖,没有继承Collection接口

二.遍历方式

1.拿到key,再拿值2.拿到映射关系,键值都有  取出保存所有Entry的Set,再遍历此Set即可

三.HashMap与Hashtable的区别

1.Hashtable更安全 2.JDK 1.8之前hashtable的key不能存放null

1.2 HashMap(数组+链表+红黑树)

HashMap 的结构。

1.3 HashMap的基本原理

put执行过程

八.字符串切割文章来源地址https://www.toymoban.com/news/detail-556930.html


一.Map特点

1.无序,键值对,键不能重复,值可以重复

2.键重复则覆盖,没有继承Collection接口

二.遍历方式

1.拿到key,再拿值 2.拿到映射关系,键值都有  取出保存所有Entry的Set,再遍历此Set即可

三.HashMap与Hashtable的区别

1.Hashtable更安全  2.JDK 1.8之前hashtable的key不能存放null

 

1.2 HashMap(数组+链表+红黑树)

HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快

的访问速度,但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null,允许多条记

录的值为 null。HashMap 非线程安全,即任一时刻可以有多个线程同时写 HashMap,可能会导

致数据的不一致。如果需要满足线程安全,可以用 Collections 的 synchronizedMap 方法使

HashMap 具有线程安全的能力,或者使用 ConcurrentHashMap。我们用下面这张图来介绍

HashMap 的结构。

J2EE&集合框架&Map,java,开发语言,eclipse,java-ee,j2ee

 

1.3 HashMap的基本原理

put执行过程

J2EE&集合框架&Map,java,开发语言,eclipse,java-ee,j2ee

 

public class Demo1 {     public static void main(String[] args) {         Hashtable<String, Integer> table = new Hashtable<>();         //有 synchronized 锁  安全         table.put("a", 1);         table.put("b", 2);                           Map<String, Integer> map = new HashMap<>();         //增加         map.put("a", 1);         map.put("b", 2);         map.put("c", 3);         map.put("d", 4);         System.out.println(map);         //删除         Object remove = map.remove("c");         System.out.println(remove);         System.out.println(map);         //修改  调用put方法         map.put("b", 88);         System.out.println(map);         //查询单个         System.out.println(map.get("c"));         //查询所有         //1.先拿到map集合中的所有key         Set keySet = map.keySet();         for (Object key : keySet) {             System.out.println("键:"+key+";值:"+map.get(key));         }                  //2.拿到映射关系         Set<Entry<String, Integer>> entrySet = map.entrySet();         for (Entry<String, Integer> entry : entrySet) {             System.out.println("键:"+entry.getKey()+";值:"+entry.getValue());         }              }

四.ConcurrentHashMap特点

1.线程安全 由CPU硬件提供并实现的原子操作 2.性能高 3.并发性高   16 个线程并发写 4.分段锁 锁分段技术(JDK8:CAS) 5.键,值不可以为null

五. 泛型

    之前:不健壮的代码,会在运行时才会把错误暴露出来      之后:           将潜在的问题暴露出来,早预防早治疗           将运行期出现的异常转换为编译期的错误

public class Demo3 {     public static void main(String[] args) {         Set<Integer> set = new HashSet<>();         set.add(1);         set.add(2);         set.add(3);         set.add(4);         set.add(5);         //打印偶数         for (Object obj : set) {             if(Integer.valueOf(obj.toString()) % 2 ==0) {                 System.out.println(obj);             }         }              }

}//泛型类 //以前 class BookDao{     //add(Book book)     //delete(Book book) } class UserDao extends BaseDao{      }

//现在 class BaseDao<T>{     void add(T t) {     }     void delete(T t) {     } }

class Result{     //泛型方法     <T> void add(T t) {     } }  

六.集合之间的相互转换

1.数组转集合:本质上依然是一个数组,长度不可变

 2.集合与数组所具备的方法不一样,如对于数组而言,就没有判断内部包含那个元素

public class Demo4 {     public static void main(String[] args) {          String[] arr= {"a","b","c","d"};          //数组转集合          List<String> list = Arrays.asList(arr);          list.add("e");          //集合转数组          Object[] array = list.toArray();         // java.lang.UnsupportedOperationExcept          System.out.println(list.size());                    } }

七.对于工具类其他方法的应用

1.排序 sort  2.tostring

package com.zking.map;

import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List;

/**  * 对于工具类其他方法的应用  * 1.排序 sort  * 2.tostring  * @author PC  *  */ public class Demo5 {     public static void main(String[] args) {     /*    List<String> list = new ArrayList<>();         list.add("c");         list.add("b");         list.add("y");         System.out.println(list);         //排序         Collections.sort(list);         System.out.println(list);         //改变排序规格 x y 指的是集合中的元素         Collections.sort(list, (x,y) -> y.compareTo(x));         System.out.println(list);*/                  List<Person> list = new ArrayList<>();         list.add(new Person("b",12));         list.add(new Person("u",16));         list.add(new Person("c",18));         System.out.println(list);         //Collections.sort(list);         Collections.sort(list, (x,y) -> x.getName().compareTo(y.getName()));                   Integer[] arr = {3,5,2,6,7,8};         Arrays.sort(arr);         //降序         Arrays.sort(arr, (x,y) -> y-x);         //升序         System.out.println(Arrays.toString(arr));                                   } }

class Person /*implements Comparable<Person>*/{     private String name;     private int age;     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public int getAge() {         return age;     }     public void setAge(int age) {         this.age = age;     }     public Person() {         // TODO Auto-generated constructor stub     }     @Override     public int hashCode() {         final int prime = 31;         int result = 1;         result = prime * result + age;         result = prime * result + ((name == null) ? 0 : name.hashCode());         return result;     }     @Override     public boolean equals(Object obj) {         if (this == obj)             return true;         if (obj == null)             return false;         if (getClass() != obj.getClass())             return false;         Person other = (Person) obj;         if (age != other.age)             return false;         if (name == null) {             if (other.name != null)                 return false;         } else if (!name.equals(other.name))             return false;         return true;     }     @Override     public String toString() {         return "Person [name=" + name + ", age=" + age + "]";     }     public Person(String name, int age) {         super();         this.name = name;         this.age = age;     }     /*@Override     public int compareTo(Person o) {         // TODO Auto-generated method stub         return o.getName().compareTo(this.name);     }*/           }  

八.字符串切割

实现思路          * 1.做字符串切割,得到一个字符组          * 2.再遍历,拿到单个字符          * 3.如果该字符没有出现过,即value值为null,那么该字符为KEY键,值初始化为1          * 4.如果已经出现过,拿到原来的值+1

public class Demo2 {     public static void main(String[] args) {         String s = "asdfggyehcbckndxbssjjdhggfj";                char[] arr = s.toCharArray();         Map<Character, Integer> map = new TreeMap<>();         for (char c : arr) {             Integer value = map.get(c);             if(value == null ) {                 map.put(c, 1);             }             else {                 map.put(c, value+1);             }         }                  Set<Entry<Character, Integer>> entrySet = map.entrySet();         for (Entry<Character, Integer> entry : entrySet) {             System.out.println(entry.getKey()+":"+entry.getValue());         }                       } }  

到了这里,关于J2EE&集合框架&Map的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • J2EE,Java EE,Jakarta EE 命名之间的恩恩怨怨

      简单来说,上面所有的名字指的都是一个东西 Java Platform, Enterprise Edition 上面的几个名词都是下面的内容的简写: J2EE(Java 2 Platform, Enterprise Edition) Java EE (Java Platform, Enterprise Edition) Jakarta EE(Jakarta Enterprise Edition) 上面的排序是按照时间演进来进行排序。   1998年12月,SUN公司发

    2023年04月26日
    浏览(31)
  • 14天学会:基于J2EE的JAVA WEB基础

    手把手教你:基于Django的新闻文本分类可视化系统(文本分类由bert实现) 手把手教你:基于python的文本分类(sklearn-决策树和随机森林实现) 手把手教你:岩石样本智能识别系统 本文通过一个14天的学习文档教会大家学会 基于J2EE的JAVA WEB基础 本次上传的资源比较大,因此分

    2024年02月15日
    浏览(31)
  • J2EE&反射

    目录 一.什么是反射        用实体类Student做示范 三.反射实例化 四.反射动态方法调用 五.反射读写属性 反射java语言中的一种机制,通过这种机制可以动态的实例化对象,读写属性,调用方法 二.类类 Class.forName(完整类名) 类名 .class 对象 .getClass        用实体类Student做示范

    2024年02月16日
    浏览(31)
  • springboot+java汽车配件销售业绩管理系统 J2EE平台技术

    汽车配件销售类企业近年来得到长足发展,在市场份额不断扩大同时,如何更好地管理企业现有销售项目资源成为摆在该类企业面前的重要课题之一。本次打算开发的springboot汽车配件销售业绩管理系统的开发过程引用 J2EE平台技术,该平台中所包含的JDBC、JNDI等组件,规定访问数据

    2024年02月06日
    浏览(35)
  • J2EE&XML建模

    目录 用一个xml-config文件实例: 先看config.xml文件 再看 ActionModel ConfigModel ActionNotFoundException ForwardNotFoundException ConfigModelFactory ActionDuplicateDefinitionException ForwardDuplicateDefinitionException InvalidPathException 用一个xml-config文件实例:  ActionModel ConfigModel ForwardModel      ActionNotFoundExcepti

    2024年02月16日
    浏览(27)
  • J2EE&通用分页02

    目录 一.重构-提取公用方法            1.为了进行公共方法的抽取,需要找出上面实习中的可通用部分,和差异化部分     2.公用方法封装思路       3. 具体实现 二.分页标签 2.1 准备一个Servlet  3.2 结果展示页面 三. 过滤器解决中文乱码问题 四.加入分页功能 四.封装分

    2024年02月15日
    浏览(32)
  • J2EE项目部署与发布(Windows版本)

    目录 一、会议OA单体项目Windows部署 1.1 数据测试 1.2 项目部署 1.3 报错解决 1.4 最终效果 二、spa前后端分离项目Windows部署 2.1 后端代码测试 2.2 前端代码测试 2.3 项目部署 2.3.1 数据导入 2.3.2 后端部署 2.3.3 前端部署 2.3.3.1 Node.js环境配置 2.3.4 端口问题解决 2.3.4.1 method1 2.3.4.2 meth

    2024年02月07日
    浏览(34)
  • J2EE项目部署与发布(Linux版本)

    目录 一.jdktomcat安装 1.jdk的安装  1.2解压对应的安装包 1.3配置环境变量  2.tomcat的安装  二.mysql的安装 三.后端接口部署  后端部署 导入war包 修改端口  开启访问 1.jdk的安装 登录VMware Workstation Pro 然后连接MobaXterm      将 jdk tomcat mysql 导入到MobaXterm   1.2解压对应的安装包  

    2024年02月06日
    浏览(25)
  • 虚拟机部署与发布J2EE项目(Linux版本)

                                                      🎬 艳艳耶✌️:个人主页                                                   🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》                                                     ⛺️ 越努力 ,越幸

    2024年02月06日
    浏览(33)
  • 小研究 - J2EE 应用服务器的软件老化测试研究

    软件老化现象是影响软件可靠性的重要因素,长期运行的软件系统存在软件老化现象,这将影响整个业务系统的正常运行,给企事业单位带来无可估量的经济损失。软件老化出现的主要原因是操作系统资源消耗殆尽,导致应用系统的性能下降甚至崩溃或宕机。文中监测J2EE 应

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包