前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java(集合④)

Java(集合④)

作者头像
全栈开发日记
发布2022-05-12 20:25:32
7190
发布2022-05-12 20:25:32
举报
文章被收录于专栏:全栈开发日记

可变参数:

是1.5之后出现的新特性。

前提条件:

当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;

格式:

代码语言:javascript
复制
修饰符 返回值类型 方法名(数据类型...变量名){}

代码:

代码语言:javascript
复制
public static void sum(int...a){//可变参数}

注意:可变参数可传零-多个;

可变参数的原理:

可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来储存这些参数;

注意事项:

1、一个方法的参数列表,只能有一个可变参数;

2、如果方法的参数有多个,那么可变参数必须写在参数列表的末尾;

实例代码:

代码语言:javascript
复制
public static void sum(int b,int...a){
//可变参数必须放在参数列表的末尾,其他参数写在前面
}

Collections集合工具类

用来对集合进行操作的;

常用方法:

void shuffle(List<?> list):打乱集合顺序;

代码语言:javascript
复制
ArrayList<String> pai=new ArrayList<>();//创建集合 
Collections.shuffle(pai);//打乱集合元素顺序

boolean addAll(Collection<? super T> c, T... elements):将所有指定元素添加到指定 collection 中;

代码语言:javascript
复制
ArrayList<String> pai=new ArrayList<>();//创建集合
Collections.addAll(pai,"a","b","cd");//将a,b,cd添加到集合pai中

void sort(List<T> list, Comparator<? super T> c):根据指定比较器产生的顺序对指定列表进行排序(默认是升序排序;

Person类:

代码语言:javascript
复制
public class Person implements Comparable<Person>{
    private String name;
    private int age;
/*
*此处隐藏构造方法以及get set等方法
*/
    @Override
    public int compareTo(Person o) {
        return this.age-o.age;
        //this-参数为升序
        //参数-this为降序 
    }
}

Test类:

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        ArrayList<Person> arrayList=new ArrayList<>();
        arrayList.add(new Person("张三",18));
        arrayList.add(new Person("张四",21));
        arrayList.add(new Person("张五",20));
        System.out.println(arrayList);//未进行排序的 
        Collections.sort(arrayList);//进行排序 
        System.out.println(arrayList);//进行排序后 
    }
}

注意:

1、被排序的集合中存储的元素,必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则;

2、 this-参数:升序

参数-this:降序

Map集合

Map集合特点:

  1. Map集合是一个双列集合,一个元素包含两个值(一个Key,一个Value);
  2. Map集合中的元素,Key和Value的数据类型可以相同,也可以不同;
  3. Map集合中的元素,key是不允许重复的,Value是可以重复的;
  4. Map集合中的元素。Key和Value是一一对应的;

Java.util.HashMap<K,V> Implements Map<K,V>接口

HashMap集合的特点:

1、HashMap集合的底层是哈希表,查询速度特别快;

JDK1.8之前:数组+单项链表;

JDK1.8之后:数组+单项链表/红黑树;

2、HashMap是一个无序集合,存储和取出的元素顺序有可能不一致;

Map接口中的方法:

①V put(K key, V value):将指定的值与此映射中的指定键关联(添加元素)

代码语言:javascript
复制
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合

注意:Key重复,会使用新的value替换map中重复的value,返回被替换的值;

②V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(删除对应的Key值元素)

代码语言:javascript
复制
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合
map.remove("小强");//删除Key值为"小强"的元素

③V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null(获取参数Key对应的Value值)

代码语言:javascript
复制
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合
map.get("小强");//获取到Value值 18

④boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true(查询对应key值)

代码语言:javascript
复制
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合
map.containsKey("小强");//查询Key值为小强的元素,返回true

HashMap集合的遍历:

第一种遍历:

Set<K> keySet():返回此映射中包含的键的 Set 视图

实现步骤:

  1. 使用Map集合中的方法KeySet(),把Map集合中所有的Key取出来,存储到一个Set集合中;
  2. 遍历Set集合,获取Map集合中的每一个Key;
  3. 通过Map集合中的get(Key)方法,用Key找到Value;
代码语言:javascript
复制
Map<String,Integer> map=new HashMap<>();
map.put("小东",180);
map.put("科比",190);
map.put("姚明",160);
//1、使用Map集合中的KeySet()方法,把Map集合中所有的Key取出来,存储到一个Set集合中
Set<String> strings = map.keySet();
//2、遍历Set集合,获取Map集合中的每一个Key
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()){
    String next = iterator.next();//Key值
    //3、通过Map集合中的get(Key)方法,用Key找到Value 
    Integer integer = map.get(next);//Value值
    System.out.println(next+"..."+integer);
}

第二种遍历:

Set<Map.Entry<K,V>> entrySet():返回此映射中包含的映射关系的 Set 视图

实现步骤:

  1. 使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中;
  2. 遍历Set集合,获取每一个Entry对象;
  3. 使用Entry对象中的方法getKey()和getValue获取键与值;
代码语言:javascript
复制
//第二种方式
//使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中
Set<Map.Entry<String, Integer>> entries = map.entrySet();
//遍历Set集合,获取每一个Entry对象
Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
while (iterator.hasNext()){
    //使用Entry对象中的方法getKey()和getValue获取键与值
    Map.Entry<String, Integer> next = iterator.next();
    String key = next.getKey();
    Integer value = next.getValue();
    System.out.println(key+"..."+value);
}
for (Map.Entry<String, Integer> x:entries){
    //使用Entry对象中的方法getKey()和getValue获取键与值
     System.out.println(x.getKey()+"..."+x.getValue());
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档