JAVA语言学习--MAP集合类
小标 2018-07-19 来源 : 阅读 1075 评论 0

摘要:本文主要向大家介绍了JAVA语言学习--MAP集合类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言学习--MAP集合类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

1.map集合遍历方式 :keyset()方法

得到map集合中所有的键,装到set集合中;然后可通过set集合作遍历。

 

public class mapdemo {

public static void main(String[] args) {

//1.调用map集合的方法keyset,把所有的键存储到set集合中

//2.遍历set集合,获取出set中所有元素(map中所有的键)

//3.调用map集合方法,由键获取值(map中本身没有迭代器,不能遍历)

//这里返回的keyset其实是hashmap中的一个内部类集合

Map<String,Integer>map = new HashMap<String,Integer>();

map.put("a", 11);

map.put("b", 12);

map.put("c", 13);

map.put("d", 14);

map.put("e", 15);

/*Set<String> set = map.keySet();

Iterator<String> it = set.iterator();

while(it.hasNext()) {

String key = it.next();

Integer value = map.get(key);

System.out.println(key+"......"+value);//map必须借用set第三方集合才能用来遍历

}*/

//利用增强for遍历,比用迭代器容易,代码量下降

System.out.println("==================================================");

for(String key : map.keySet()) {//增强for循环,实际上增强for编译完了就是迭代器

Integer value = map.get(key);

System.out.println(key+"="+value);

}

}

}

 

2.map集合遍历方式:entrySet方法 键值对的映射关系

Entry键值对对象

在map类设计时,提供了一个嵌套接口:entry;Entry将键值对的映射关系(集合中键值的映射关系:结婚证) 封装成了对象

Entry是Map接口中提供的一个静态内部嵌套接口

实现步骤:

(1)调用map集合方法entrySet(),将集合中映射关系对象存储到Set集合

              Set<Entry <k,v>> 此处为一个泛型的嵌套

(2)迭代Set集合

(3)获取出的Set集合的元素是映射关系对象

(4)通过映射关系对象中的方法getKey,getValue获取键值对

该种方式比keySet方式更简单

 

增强for循环:Collection接口有个父接口Iterable<>,该接口下的实现类均可用增强for循环,而该接口下没有map,因此不能map不能用增强for循环直接遍历,但是可以通过Set遍历,即增强for间接遍历map

增强for中:左边为键值 右边为map.xxset

 

3.HashMap集合存储和遍历

public class HashMapDemo1 {

    // 使用hashmap集合,存储自定义对象,该对象可以作为键出现也可以作为值出现

    // 使用hashmap集合存儲自定義對象person,作为值出现

    public static void main(String[] args) {

        funtion();

    }

    private static void funtion() {

        // TODO Auto-generated method stub

        HashMap<String, Person> map = new  HashMap<String, Person>();

        map.put("HeiFei", new Person("a", 20));

        map.put("B", new Person("b", 30));

        // 键的对象是字符串,可以保证唯一性

        // 如果自定义对象作为键(此处是值),需要重写hashcode equals才能保证键的唯一性,可直接自动重写

        for (String key : map.keySet()) {

            Person value = map.get(key);

            System.out.println(key + "=" +  value);

        }

        System.out.println("==================");//  用Entry方式再遍历一次

        for (Map.Entry<String, Person> entry :  map.entrySet()) {

            String key = entry.getKey();

            Person value = entry.getValue();

            System.out.println(key + "..." +  value);

        }

    }

}

4.LinkedHashMap

继承自HashMap,保证了迭代的顺序,所遇到的所有集合都是线程不安全的(运行速度快)

 

5.Hashtable的特点

Map接口的又一个实现类:Hashtable

底层数据结构为哈希表,特点和HashMap是一样的

特点区别:属于线程安全集合,运行速度较慢(故被抛弃),与Vector一样,从jdk1.2开始被更先进的hashmap取代;

                 而Hashmap属于线程不安全的集合,运行速度快,允许存储null值和键(HashTable不允许存储null )

虽然Hashtable挂了,但是他的孩子子类Properties(可和io流共同配合,实现数据的持久存储,集合本身都是内存里的东西而已)——依然活跃在开发舞台 

 

6.静态导入(jdk 1.5新特性)

作用:简化一些代码,减少开发的代码量,实际用处一般

标准写法:导入包的时候才能使用

 

7.方法的可变参数 VarArgumentsDemo

jdk1.5新特性;

比如说计算整数和,一开始是计算两个整数和,然后要求变成三个。。。。。要求随时会变,方法不可能简单的无限定义下去。

前提:方法的参数数据类型确定,但是参数个数可变

 

public class VarArgumentsDemo {

    public static void main(String[] args) {

        //调用一个带有可变参数的方法时,传递参数的个数可任意

        

        int sum =getSum(1,3,6,4,6);

        System.out.println(sum);

    }

public static int getSum(int...a) {//注意方法中可变参数的写法;数据类型。。。变量名(只有三个点).此处a的本质就是一个数组

     System.out.println(Arrays.toString(a));//若运行结果为“[I******”表明该参数为一个数组

     int sum = 0;

     for(int i : a ) {

         sum = sum + i;

     }

     return sum;

}

}

注意事项:一个方法中可变参数只有一个(不然在函数调用的时候你也不晓得是传给哪个参数)(注意是可变参只有一个不是说参数只能有一个);

                可变参数必须写在参数列表的最后一位  : fun(int a,int b,int...c)

                若写成fun(Objiect...c)则随便传参数类型

 

8.Collections集合的工具类--CollectionsDemo1

 collection:util包中的根接口

Collections:util包中的类-集合操作的工具类,其功能用来操作collection,由静态方法组成(折半查找,sort,shuffle(随机排列集合元素))

 

9.集合的嵌套 

集合本身就是一个对象,集合存储的也是对象,所以集合里面也可以存集合,即集合的嵌套。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程