Map集合的获取功能
V get(Object key);//根据键获取值
Set<K> keySet();//获取所有键的集合
Collection<K> values();//获取所有值的集合
Set<Map.Entry<K,V>>entrySet();//获取所有键值对对象的集合
相关应用:
//获取值
System.out.println(map.get("1"));//如果存在,返回相应键值 反之,返回null
//获取所有键的集合
import java.util.*; public class Main {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>(); map.put("1","lili");
map.put("2","zhangliang");
map.put("3","wangwu"); Set<String> keySet=map.keySet();
for(String ss:keySet){
System.out.println(ss);
}
}
}
//获取所有值的集合
import java.util.*; public class Main {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>(); map.put("1","lili");
map.put("2","zhangliang");
map.put("3","wangwu"); Collection<String> cc=map.values();
for(String ss:cc){
System.out.println(ss);
}
}
}
Map集合的遍历方式
//方式一
import java.util.*; public class Main {
public static void main(String[] args){
Map<String> mm=new HashMap<String>();
mm.put("1","zhangliang");
mm.put("2","lili");
mm.put("3","wangwu"); Set<String> ss=map.keySet();
for(String s:ss){
String value=mm.get(s);
System.out.println(s+","+value);
}
}
} //方式二
import java.util.*; public class Main {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>(); map.put("1","lili");
map.put("2","zhangliang");
map.put("3","wangwu"); Set<Map.Entry<String,String>> ss=map.entrySet(); for(Map.Entry<String,String> mm:ss){
String key=mm.getKey();
String value=mm.getValue();
System.out.println(key+","+value);
}
}
}
案例:HashMap集合存储学生对象并遍历
//Main.java
import java.util.*; public class Main {
public static void main(String[] args) {
Map<String,Student> map=new HashMap<String,Student>(); Student s1=new Student("zhangliang",19);
Student s2=new Student("wangwu",20);
Student s3=new Student("lili",18); map.put("12",s1);
map.put("23",s2);
map.put("34",s3); //方式一
Set<String> sss=map.keySet();
for(String sa:sss){
Student value=map.get(sa);
System.out.println(sa+","+value.getName()+","+value.getAge());
} //方式二
Set<Map.Entry<String,Student>> ss=map.entrySet();
for(Map.Entry<String,Student> me:ss){
String key=me.getKey();
Student value=me.getValue();
System.out.println(key+","+value.getName()+","+value.getAge());
} }
}
//Student.java已经省略
HashMap集合存储学生对象并遍历
//Main.java
import java.util.*; public class Main {
public static void main(String[] args) {
Map<Student, String> map=new HashMap<Student,String>(); Student s1=new Student("wangwu",19);
Student s2=new Student("lili",18);
Student s3=new Student("lisi",20); map.put(s1,"shi");
map.put(s2,"jia");
map.put(s3,"zhuang"); Set<Student> set=map.keySet(); //方式一
for(Student s:set){
String value=map.get(s);
System.out.println(s.getName()+","+s.getAge()+","+value);
} System.out.println("----------------------"); //方式二
Set<Map.Entry<Student,String>> ss=map.entrySet(); for(Map.Entry<Student,String> me:ss){
Student key=me.getKey();
String value=me.getValue();
System.out.println(key.getName()+","+key.getAge()+","+value);
}
}
}
//Student.java已省略
案例:ArrayList集合存储HashMap元素并遍历
import java.util.*;

public class Main {
public static void main(String[] args) {
ArrayList<HashMap<String,String>> arr=new ArrayList<HashMap<String,String>>();
HashMap<String,String> hh=new HashMap<String,String>(); hh.put("1","3");
hh.put("2","4");
hh.put("5","7"); arr.add(hh); for(HashMap<String,String> me:arr){
Set<String> keyset=hh.keySet();
for(String ss:keyset){
String s1=hh.get(ss);
System.out.println(ss+","+s1);
}
}
}
}
案例:HashMap集合存储ArrayList元素并遍历
import java.util.*;

public class Main {
public static void main(String[] args) {
HashMap<String,ArrayList<String>> hm=new HashMap<String,ArrayList<String>>();
ArrayList<String> arr=new ArrayList<String>(); arr.add("shi"); hm.put("石",arr); Set<String> keyset=hm.keySet();
for(String s:keyset){
ArrayList<String> aa=hm.get(s);
for(String mm:aa){
System.out.println(mm);
}
}
}
}
案例:统计字符串中每个字符出现的次数
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//输入字符串
String s=sc.nextLine();
HashMap<Character,Integer> hm=new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
char key= s.charAt(i);//键
Integer ii=hm.get(key);
if(ii==null){
hm.put(key,1);
}else{
ii++;
hm.put(key,ii);
}
}
//分割
StringBuilder sb=new StringBuilder();
Set<Character> keyset=hm.keySet();
for(Character key:keyset){
Integer value=hm.get(key);
//拼接
sb.append(key).append("(").append(value).append(")");
}
//转换为字符串
String result=sb.toString();
//输出
System.out.println(result);
}
}

Collections

针对集合操作的工具类
public static <T extends Comparable<?super T>> void sort(List<T> list);//升序排列
public static void reverse(List<?> list);//反转指定列表中元素的顺序
public static void shuffle(List<?> list);//使用默认的随机源随机排列指定的列表
相关应用:
//升序排列
Collections.sort(ll);
//反转既定序列
Collections.reverse(ll);
//随机排序
Coolections.shuffle(ll);
案例:ArrayList存储学生对象并排序
import java.util.*;

public class Main {
public static void main(String[] args) {
ArrayList<Student> arr=new ArrayList<Student>(); Student s1=new Student("lili",19);
Student s2=new Student("wangwu",19);
Student s3=new Student("zhangliang",18); arr.add(s1);
arr.add(s2);
arr.add(s3); Collections.sort(arr, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num=s1.getAge()-s2.getAge();
int num2=num==0?s1.getName().compareTo(s2.getName()):num;
return num2;
}
}); for(Student s:arr){
String name=s.getName();
int age=s.getAge(); System.out.println(name+","+age);
}
}
}
案例:模拟斗地主
//基础版
import java.util.*; public class Main {
public static void main(String[] args) {
ArrayList<String> arr=new ArrayList<String>(); //定义花色数组
String[] colors={"","","",""};
//定义数字数组
String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(String color:colors){
for(String number:numbers){
arr.add(color+number);
}
}
arr.add("小王");
arr.add("大王"); //洗牌
Collections.shuffle(arr); //发牌
ArrayList<String> aarr=new ArrayList<String>();
ArrayList<String> barr=new ArrayList<String>();
ArrayList<String> carr=new ArrayList<String>();
ArrayList<String> darr=new ArrayList<String>(); for(int i=0;i<arr.size();i++){
String poker=arr.get(i); if(i>=arr.size()-3){
darr.add(poker);
}else if(i%3==0){
aarr.add(poker);
}else if(i%3==1){
barr.add(poker);
}else{
carr.add(poker);
}
} looker("a",aarr);
looker("b",barr);
looker("c",carr);
looker("d",darr);
}
public static void looker(String name,ArrayList<String> arr){
System.out.println(name+"的牌是:");
for(String poker:arr){
System.out.println(poker+" ");
}
}
}
//升级版
import java.util.*; public class Main {
public static void main(String[] args) {
HashMap<Integer,String> hm=new HashMap<Integer,String>();
ArrayList<Integer> arr=new ArrayList<Integer>();
//定义花色数组
String[] colors={"","","",""};
//定义数字数组
String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; int index=0;
for(String number:numbers){
for(String color:colors){
hm.put(index,color+number);
arr.add(index);
index++;
}
}
hm.put(index,"小王");
arr.add(index);
index++;
hm.put(index,"大王");
arr.add(index); //洗牌
Collections.sort(arr); //发牌
TreeSet<Integer> aarr=new TreeSet<Integer>();
TreeSet<Integer> barr=new TreeSet<Integer>();
TreeSet<Integer> carr=new TreeSet<Integer>();
TreeSet<Integer> darr=new TreeSet<Integer>(); for(int i=0;i<arr.size();i++){
if(i>=arr.size()-3){
darr.add(arr.get(i));
}else if(i%3==0){
aarr.add(arr.get(i));
}else if(i%3==1){
barr.add(arr.get(i));
}else{
carr.add(arr.get(i));
}
}
looker("a",aarr,hm);
looker("b",barr,hm);
looker("c",carr,hm);
looker("d",darr,hm);
} public static void looker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){
System.out.println(name+"的牌是: ");
for(Integer key:ts){
String poker=hm.get(key);
System.out.println(poker+" ");
}
}
}

File类

是文件和目录路径名的抽象表示
File(String pathname);//将字符串转变为抽象路径名
File(String parent,String child);//从父路径名字符串和子路径名字符串创建新的File实例
File(File parent,String child);//从父抽象路径名和子路径名字符串创建新的File实例
相关应用:
//仅仅能够显示,并不要求该文件存在
File f1=new File("E:\\itcast\\java.txt");
System.out.println(f1);
//显示内容与上述一致
File f1=new File("E:\\itcast","java.txt");
System.out.println(f1);
//显示内容与上述一致
File f1=new File("E:\\itcast");
File f2=new File(f1,"java.txt");
System.out.println(f2);

Java笔记第三弹的更多相关文章

  1. Effective java笔记(三),类与接口

    类与接口是Java语言的核心,设计出更加有用.健壮和灵活的类与接口很重要. 13.使类和成员的可访问性最小化 设计良好的模块会隐藏起所有的实现细节,仅使用API与其他模块进行通信.这个概念称为信息隐藏 ...

  2. Java笔记(三)异常

    异常 一.概念 一)为什么会有Java异常机制 在没有Java异常机制的情况下,唯一的退出机制就是返回值,判断是否异常的方法就是 返回值.方法根据是否异常返回不同的返回值,调用者根据不同的返回值进行判 ...

  3. 菜鸡的Java笔记 第三十七 - java 线程与进程

    线程与进程        线程与进程的区别                最早的的时候DOS 系统有一个特点:只要电脑有病毒,那么电脑就死机了,是因为传统的DOS 系统属于单进程的操作系统       ...

  4. 菜鸡的Java笔记 第三十四 Annotation

    Annotation        多例模式特点:            1. 多例类可以有多个实例            2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ...

  5. 菜鸡的Java笔记 第三十三 - java 泛型

    泛型 GenericParadigm        1.泛型的产生动机        2.泛型的使用以及通配符        3.泛型方法的使用                JDK1.5 后的三大主 ...

  6. 菜鸡的Java笔记 第三十 - java 异常的捕获及处理

    异常的捕获及处理        1.异常的产生分析以及所带来的影响        2.异常的处理的基本格式        3.异常的处理流程        4.异常的处理模式        5.自定义 ...

  7. 菜鸡的Java笔记 第三十五 接口定义增强

    接口定义增强        在java从一开始到现在接口之中的核心组成部分:抽象方法与全局常量,但是随着技术的不断发展,用户在使用过程之中发现了有一些问题        如果说现在有一个接口经过了长年 ...

  8. 菜鸡的Java笔记 第三十六 - java 函数式编程

    StudyLambda    Lambda 指的是函数式编程,现在最为流行的编程模式为面向对象,很多的开发者并不认可面向对象,所以很多的开发者宁愿继续使用 C 语言进行开发,也不愿意使用java,c+ ...

  9. 菜鸡的Java笔记 第三十一 扩展结构

    .新特性        可变参数的意义以及实现                那么下面通过一个简单的思考来分析可变参数的存在意义        范例:如果说现在要定义一个方法,这个方法可以实现任意多个 ...

  10. 菜鸡的Java笔记 第三十二 - java 静态导入的实现

    静态导入的实现        为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察        范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 packa ...

随机推荐

  1. cell批量改名字

    本帖最后由 wanchengchen 于 2021-7-19 10:41 编辑下面是在论坛上学习到的脚本,发上来大家一起学习,使用的是virtuoso6.1.7:layout改名字:procedure ...

  2. 侠客行+越女剑 <随笔>

    侠客行:自己提炼剧情是一个很费时费劲的事情,好在剽窃百度百科不算抄袭,而且也足够还原,红字为补充 一向平静祥和的小市镇侯监集上,忽然来了二百多名杀人不眨眼的强盗.镇上乡亲们都熟悉的卖饼老者王老汉,却被 ...

  3. obspy常用命令记录

    如何使用obspy(适用于MAC.Linux.Windows)完全替代SAC(使用于Linux和MAC) 波形预处理 # 去均值 stream.detrend('demean') # 去线性趋势 st ...

  4. 学Java的第5天,今天做了个双色球系统

    今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...

  5. HashMap长度为什么是2的幂

    虽然hash值很多,范围很大,但是内存存不了那么大的数组,所以取hash的散列值的时候,需要用hash值,除以数组长度取余数.又由于取余数(%)的性能不如与运算(&),所以想用与运算来代替取余 ...

  6. 在gitlab仓库中cli 编译通不过 怎样解决

    1.先切换到master  分支 git  pull   (把代码拉下来) 2.再切换到当前分支 git  rebase   master 查看git  log 看是否跟新到最新的log 3.再在当前 ...

  7. redis事务和锁机制、持久化操作RDB/AOF

    一.Redis事务介绍 Redis事务是一个单独的隔离操作 :事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.Redis事务的主要作用就是串联多个 ...

  8. 04 Hadoop思想与原理

    Hadoop最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题--如何解决数十亿网页的存储和索引 ...

  9. 3-1 熟悉Hadoop及其操作

    Hadoop最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题--如何解决数十亿网页的存储和索引 ...

  10. Vue+SSM+Element-Ui实现前后端分离(3)

    前言:经过博文(1)vue搭建,(2)ssm搭建,到这里就该真真切切的实现小功能了<-_-> 规划:实现登录,用户列表查询,访问日志aop; 开始先解决跨域:在目录config/index ...