java map接口,可变参数,Collections集合工具类

map接口的实现类存储成对的值,键——值。通过键来找到对应的值。

Collection中的集合称为单列集合,Map中的集合称为双列集合

Map中常用的集合为HashMap集合、LinkedHashMap集合。

HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同

l put方法:将指定的键与值对应起来,并添加到集合中

n 方法返回值为键所对应的值

使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;

使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。

l get方法:获取指定键(key)所对应的值(value)

l remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。

 1 public static void method01(){
 2         Map<String,String> map =new HashMap<String,String>();
 3         map.put("黄晓明", "baby"); //添加
 4         map.put("邓超", "孙俪");
 5         map.put("李晨", "范冰冰");
 6         map.put("徐峥", "桃红");
 7         map.put("徐峥", "红");
 8         //map.remove("徐峥");
 9         System.out.println(map.get("徐峥"));
10     }

遍历

 1 public static void method02(){
 2         Map<String,String> map =new HashMap<String,String>();
 3         map.put("黄晓明", "baby"); //添加
 4         map.put("邓超", "孙俪");
 5         map.put("李晨", "范冰冰");
 6         map.put("徐峥", "桃红");
 7         map.put("徐峥", "红");
 8         //遍历map集合
 9         //1、先获取所有存有map键的集合
10         //2、遍历set集合获取到每一个键
11         //3、根据键调用get方法获取到每一个值
12         //先创建一个set集合,调用keyset方法
13         Set<String> set =map.keySet();
14         //循环键,用get方法得到键所对应的值
15         for(Iterator<String> it=set.iterator();it.hasNext();){
16             System.out.println(map.get(it.next()));
17         }
18     }

Entry键值对对象

 1 public static void method04(){
 2         Map<String,String> map =new HashMap<String,String>();
 3         map.put("黄晓明", "baby"); //添加
 4         map.put("邓超", "孙俪");
 5         map.put("李晨", "范冰冰");
 6         map.put("徐峥", "桃红");
 7         //遍历结婚证
 8     /*    1、先获得结婚证存有set集合
 9         2、遍历结婚证集合得到每一个集合
10         3、得到每一个结婚证以后获取这个结婚证中的男方和女方  */
11         Set<Map.Entry<String, String>> se = map.entrySet();
12         for(Map.Entry<String, String> entry:se){
13             System.out.println(entry.getKey()+entry.getValue());
14         }
15     }    2种方法
16     public static void method05(){
17         Map<String,String> map =new HashMap<String,String>();
18         map.put("黄晓明", "baby"); //添加
19         map.put("邓超", "孙俪");
20         map.put("李晨", "范冰冰");
21         map.put("徐峥", "桃红");
22         Set<Map.Entry<String, String>> se = map.entrySet();
23         for(Iterator<Entry<String, String>> it= se.iterator();it.hasNext();){
24             Entry<String, String> str =it.next();
25             System.out.println(str);
26         }
27     }

可变参数

在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:

修饰符 返回值类型 方法名(参数类型... 形参名){  }

其实这个书写完全等价与

修饰符 返回值类型 方法名(参数类型[] 形参名){  }

只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。

jdk1.5以后。出现了简化操作。... 用在参数上,称之为可变参数。

public static int add(int...arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

Collections集合工具类

模拟斗地主发牌练习

 1 /*    //构造扑克牌
 2         HashMap<Integer,String> pooker =new HashMap<Integer,String>();
 3         //用于存扑克牌map中的key,洗牌的时候用
 4         ArrayList<Integer> pookenumber =new ArrayList<Integer>();
 5         //封装一副扑克牌
 6         //定义花色数组
 7         String[] color={"?","?","?","?"};
 8         //定义数字数组
 9         String[] number ={"2","A","3","4","5","6","7","8","9","10","J","Q","k"};
10         int index =2;
11         for(String num:number){
12             for(String c:color){
13                 //将花色与数字结合存入map
14                 pooker.put(index, c+num);
15                 pookenumber.add(index);
16                 index++;
17             }
18         }
19         pooker.put(0, "大王");
20         pookenumber.add(0);
21         pooker.put(1, "小王");
22         pookenumber.add(1);
23         Set<Integer> set =pooker.keySet();
24         for(Integer i:set){
25             System.out.println(i+"..."+pooker.get(i));
26         }
27         //洗牌
28         Collections.shuffle(pookenumber);
29         ArrayList<Integer> player1=new ArrayList<Integer>();
30         ArrayList<Integer> player2=new ArrayList<Integer>();
31         ArrayList<Integer> player3=new ArrayList<Integer>();
32         ArrayList<Integer> bottom=new ArrayList<Integer>();
33         for(int i =0;i<pookenumber.size();i++){
34             if(i<3){
35                 bottom.add(pookenumber.get(i));
36             }else if(i%3==0){
37                 player1.add(pookenumber.get(i));
38             }else if(i%3==1){
39                 player2.add(pookenumber.get(i));
40             }else if(i%3==2){
41                 player3.add(pookenumber.get(i));
42             }
43         }
44         //给玩家手里的牌排序
45         Collections.sort(player1);
46         Collections.sort(player2);
47         Collections.sort(player3);
48         Collections.sort(bottom);
49         look("玩家一",player1,pooker);
50         look("玩家二",player2,pooker);
51         look("玩家三",player3,pooker);
52         look("底牌",bottom,pooker);*/
53         
 1 /*public static void look(String name,ArrayList<Integer> player,
 2             HashMap<Integer,String>map){
 3         System.out.println(name+":");
 4         for(Integer num:player){
 5             System.out.print(map.get(num));
 6
 7         }
 8         System.out.println();
 9     }*/
10     

原文地址:https://www.cnblogs.com/wangrongchen/p/9130761.html

时间: 2024-10-10 15:41:06

java map接口,可变参数,Collections集合工具类的相关文章

java 16 - 13 可变参数和Arrays工具类的asList()方法

可变参数:定义方法的时候不知道该定义多少个参数 格式: 修饰符 返回值类型 方法名(数据类型… 变量名){ } 注意: 这里的变量其实是一个数组 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 1 import java.util.Scanner; 2 public class ArgsDemo { 3 4 public static void main(String[] args) { 5 int result = sum(1,2,3,4,5,6,7,8,9);//参与计

Map集合以及Collections集合工具类

一.Collection集合主要特点与Map集合的区别 Collection: 单列集合:有两个子接口 List集合元素是有序的,可以重复的 Set集合元素是无序的,不可以重复 List:元素可重复,有序 ArrayList:底层数据结构是数组,查询快,增删慢,不同步,线程不安全,效率高:没有特殊说明一般使用ArrayList集合: Vector:底层数据结构是数组,查询快,增删慢,同步,线程安全,效率低:有一个elements()特有迭代方法: LinkedList:底层数据结构是链表,查询慢

Collections集合工具类

Collections集合工具类,专门用来对集合进行操作的. 常用方法: public static<T> boolean addAll(Collection<T> c,T....elements):往集合中添加一些元素 public static void shuffle(List<?> list):打乱list集合顺序 public static <T> void sort(List<?> list):将集合中的元素,按照默认规则排序,自定义

Java基础知识回顾-22(静态导入,可变参数,Collections集合工具类,集合嵌套)

1.在导包的时候可以导入其静态部分,这样在类中使用其时,可以直接以其名使用 例如:Map.Entry的访问,在类文件头部导入import java.util.Map.Entry后简化后为Entry. 2.可以用"修饰符 返回值类型 方法名(参数类型... 形参名){  }"的方式来同时传入不确定个数,相同参数类型的参数.比如当求不确定个数的int类型的数据的和时,可以使用这种方式,避免写多个方法,如果参数类型不改变,则该方法不可重载,因为可变参数不确定参数个数吗.若要增加不可变参数,需

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

java Collections集合工具类

/* Collections是Collection的工具类. 工具类中其中两个比较常用的方法就是: 1,sort(list) . sort(list,自定义比较器) 2,max(list) . max(list,自定义比较器) 3,binarySearch(list,key) //利用折半查找的方法找到list中key元素的索引,存在则返回索引,不存在则返回-(插入点)-1 */ import java.util.*; class CollectionsDemo { public static

JAVA学习--Collections集合工具类使用

* 操作Collection以及Map的工具类:Collections -------------------------------------------------------------------------------------------------------------- *  reverse(List):反转 List 中元素的顺序         shuffle(List):对 List 集合元素进行随机排序         sort(List):根据元素的自然顺序对指定

Collections:集合工具类

public static <T> boolean addAll(Collection<? super T> c, T... elements) 将指定元素们加入到指定集合 public static void reverse(List<?> list) 反转指定列表中元素的顺序 public static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换.所有置换发生的可能性都是大致相等的.即 随机打乱顺序 //数组&

java Map接口实现之一TreeMap(不涉及类比较)

需要排序的时候使用TreeMap,是红黑二叉树的典型实现 Map<Integer,String> treemap =new TreeMap<>(); treemap.put(1,"ad"); treemap.put(12, "ff"); treemap.put(4, "bb"); *treemap.keySet()* //返回键的集合 for(Integer i :treemap.keySet()) //返回一个key的集