吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2215|回复: 4
收起左侧

[Java 转载] Java(集合④)

[复制链接]
二饭 发表于 2020-4-12 10:48
本帖最后由 二饭 于 2020-4-12 10:51 编辑

可变参数:1.5之后出现的新特性。
前提条件:    当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;
格式:
[Java] 纯文本查看 复制代码
修饰符 返回值类型 方法名(数据类型...变量名){}


代码:
[Java] 纯文本查看 复制代码
public static void sum(int...a){//可变参数}

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


注意事项:
1、一个方法的参数列表,只能有一个可变参数;
2、如果方法的参数有多个,那么可变参数必须写在参数列表的末尾
实例代码:
[Java] 纯文本查看 复制代码
public static void sum(int b,int...a){
//可变参数必须放在参数列表的末尾,其他参数写在前面
}




Collections集合工具类
用来对集合进行操作的;

常用方法:

void shuffle(List<?> list):打乱集合顺序;
[Java] 纯文本查看 复制代码
ArrayList<String> pai=new ArrayList<>();//创建集合 
Collections.shuffle(pai);//打乱集合元素顺序


boolean addAll(Collection<? super T> c, T... elements):将所有指定元素添加到指定 collection 中;
[Java] 纯文本查看 复制代码
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类:
[Java] 纯文本查看 复制代码
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类:
[Java] 纯文本查看 复制代码
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):将指定的值与此映射中的指定键关联(添加元素)
[Java] 纯文本查看 复制代码
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合


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

②V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除(删除对应的Key值元素)
[Java] 纯文本查看 复制代码
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合
map.remove("小强");//删除Key值为"小强"的元素



③V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null(获取参数Key对应的Value值)
[Java] 纯文本查看 复制代码
Map<String,Integer> map=new HashMap<>();//创建集合
map.put("小强",18);//存放进集合
map.get("小强");//获取到Value值 18


④boolean containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true(查询对应key值)
[Java] 纯文本查看 复制代码
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;
[Java] 纯文本查看 复制代码
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获取键与值;


[Java] 纯文本查看 复制代码
//第二种方式
//使用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());
}



这次格式好了不少 我再努力吧{:1_924:}

..

免费评分

参与人数 3吾爱币 +7 热心值 +3 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
WWB0224 + 1 + 1 热心回复!
zhinian1 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qinyuanjun1993 发表于 2020-4-12 11:06
虽然看不懂 但是前排支持一下原创
wangyoo 发表于 2020-4-12 11:09
isispp 发表于 2020-4-12 11:33
vethenc 发表于 2020-4-12 11:54
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-7 21:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表