蓝桥杯 数据结构 java

1.HashMap

import java.util.HashMap;
import java.util.Map;

public class HashMapp {

    public static void main(String[] args) {
        // 声明HashMap对象
        Map<String,Integer> map= new HashMap<>();

        //添加数据
        map.put("ZhangYi",98);
        map.put("WangEr",99);
        map.put("ZhangShan",89);
        map.put("Lisi",92);

        //根据键值对键值获取数据‘’
        int value=map.get("Lisi");
        System.out.println("kay:Lisi And value:"+value);

        //获取Map中键值对的个数
        int size=map.size();
        System.out.println("map 中的键值对个数为:"+size);

        //判断Map集合中是否包含键为key的键值对
        boolean b1=map.containsKey("LiSI");
        boolean b2=map.containsKey("Lisi");
        System.out.println("是否包含键值为LiSI的键值对数据:"+b1);
        System.out.println("是否包含键值为Lisi的键值对数据:"+b2);

        //判断Map集合中是否包含值为value的键值对
        boolean b3=map.containsValue(99);
        boolean b4=map.containsValue(100);
        System.out.println("是否包含值为99的键值对数据:"+b3);
        System.out.println("是否包含值为100的键值对数据:"+b4);

        //判断Map集合中是否没有任何键值对

        boolean b5=map.isEmpty();
        System.out.println("map中键值对数据是否为空:"+b5);

        //根据键值删除Map中键值对
        int value2=map.remove("Lisi");
        System.out.println("删除了键为Lisi的键值对数据,其值为:"+value2);

        boolean b6=map.containsKey("Lisi");
        System.out.println("是否包含键值为Lisi的键值对数据:"+b6);

        //清空Map集合中所有的键值对
        map.clear();
        boolean b7=map.isEmpty();
        System.out.println("map中键值对数据是否为空:"+b7);

    }
}

2.HashSet

import java.util.HashSet;
/*
 * HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。

 */

public class _HashSet {
	public static void main(String[] args) {
		 HashSet<String> sites = new HashSet<String>();
		    //添加
		    sites.add("第一");
		    sites.add("第二");
		    sites.add("第二");  // 重复的元素不会被添加
		    //使用 contains() 方法来判断元素是否存在于集合当中:
		    boolean res=sites.contains("第三");
		    //使用 remove() 方法来删除集合中的元素
		    sites.remove("第二");
		    //删除所有元素
		    sites.clear();
		    //使用 size() 方法计算元素数量
		    int num=sites.size();
		    sites.add("第四");
		    sites.add("第五");
		    //使用 for-each 来迭代 HashSet 中的元素
		    for (String i : sites) {
		        System.out.println(i);
		    }
		    System.out.println(sites);
	}
}

2.StringBuffer

StringBuffer strbuf;   //StringBuffer可变
String str=strbuf.toString();   //要用toString改变成String

//把int型123转换为String初始化为StringBuffer,并对StringBuffer进行了逆转,最后转换回String
String str=new StringBuilder(String.valueOf(1234)).reverse().toString();

3.String
String用法详解

        /*这一部分代码
        *是要求输入一个八位数字,代表日期,如20120512
        *输出年份
        */
        Scanner sc = new Scanner(System.in);
		n = sc.nextInt();         //输入一个int型的日期20120512
		sn = String.valueOf(n);   //把int型转换成String
		 //切割[0,4),并将切割后的字符串转换成int型  //结果是int型的2012
		curyear = Integer.parseInt(sn.substring(0, 4));  //String转int
		int b = Integer.valueOf(str).intValue()          //String转int法二

4.ArrayList

        //初始化
        List <List <Integer>> list=new ArrayList <List <Integer>>();  //注意这个初始化
        List <Integer> now=new ArrayList <Integer>();
        
        //元素的添加和删除
        res.add(new ArrayList<Integer>(now));
        now.remove(now.size()-1);
        //位置交换
		Collections.swap(now,index,i);

5.Arrays

		int [] flag = new int [30];	
		Arrays.fill(flag, -1);   //填充数组
import java.util.Arrays;
import java.util.Comparator;

public class Array_sort_排序 {
	
	public static void main(String[] args) {
	     //Arrays.sort(int[] a)
	     //对一个数组的所有元素进行排序,并且是按从小到大的顺序。
	     //结果0 1 2 3 4 5 6 7 8 9 
		 int[] num1 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
         Arrays.sort(num1);
         
         //Arrays.sort(int[] a, int fromIndex, int toIndex)
         //这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序哦!
         //结果7 8 9 2 3 4 1 0 6 5*/
         int[] num2 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
         Arrays.sort(num2, 0, 3);
         
         //public static void sort(T[] a,int fromIndex,int toIndex, Comparator c)
         //牵扯到了Java里面的泛型
         // 注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)
         // 而要使用它们对应的类
         //结果 9 8 7 6 5 4 3 2 1 0
         Integer[] num3 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
         Comparator cmp = new MyComparator();   //定义一个自定义类MyComparator的对象
         Arrays.sort(num3, cmp);
         
         
         //a-b<0    返回——→a<b ,返回递增的。其中a,b是num4的类型    
         Integer[] num4 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
         Arrays.sort(num4,  (a, b) -> a - b);
         for(int i = 0; i < num4.length; i ++) {
             System.out.print(num4[i] + " ");
         }
    }
}

//Comparator是一个接口,所以这里我们自己定义的类MyComparator要implents该接口
//而不是extends Comparator
 class MyComparator implements Comparator<Integer>{
     public int compare(Integer o1, Integer o2) {
         //如果n1小于n2,我们就返回正值,如果n1大于n2我们就返回负值,
         //这样颠倒一下,就可以实现反向排序了
         if(o1 < o2) { 
             return 1;
         }else if(o1 > o2) {
             return -1;
         }else {
             return 0;
         }
     }
 }

6.Calendar


/*1999年的12月31日是星期五,请问:
*未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
*/
import java.util.*;
public class Main {
	
	public static void main(String[] args){
		Scanner  scanner = new Scanner(System.in);
		Calendar calendar = Calendar.getInstance();
		for(int i=1999;i<=10000;i+=100){
			calendar.set(Calendar.YEAR, i);
			calendar.set(Calendar.MONTH,11);
			calendar.set(Calendar.DATE,31);
			int t =calendar.get(Calendar.DAY_OF_WEEK);
			if(t==1){
				System.out.println(i);
				break;
			}
		}
	}
}
        /*计算从1901.1.1到2000.12.31有多少个星期一*/
        int num=0;
		Calendar start = Calendar.getInstance();
		start.set(1901,1,1);
		Calendar end = Calendar.getInstance();
		end.set(2000,12,31);
		while(!start.equals(end))
		{
			if(start.get(Calendar.DAY_OF_WEEK)==2)
			{
				num+=1;
			}
			start.add(Calendar.DATE, 1);
			
		}
		System.out.println(num);

7.二维数组

		char[][] ch = new char[][] {"123456".toCharArray(),"456789".toCharArray()};

		int [][] arr=new int[][]{{4,5,6,8},{2,3},{1,6,9}};

		System.out.println(arr.length);//输出行数   3
		System.out.println(arr[0].length);//输出列数   4

		int[][] arr2=new int[2][];
		
		List<int[ ]> list = new ArrayList<int [ ]>();
		int x=1,y=2;
		list.add(new int[] {x,y});
		int arr3[][]=list.toArray(new int[list.size()][]);

8.文件输入输出

    System.setIn(new FileInputStream(new File("in.txt")));//输入重定向
    System.setOut(new PrintStream(new File("out.txt")));//输出重定向
    Scanner in = new Scanner(new BufferedInputStream(System.in));
		String path = "C:\\Users\\Desktop\\a.txt";
        File f = new File(path);
		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
		String s;
		while((s=reader.readLine())!=null) {
			s = s.replace(" ", "");
			...
		}
		reader.close();
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值