zoukankan      html  css  js  c++  java
  • 从入门到放弃的第三周(a'pi)......day.13.。。。。。LinkedList,Set接口: Collections,提供若干的针对集合操作方法;

     

    1,LinkedList

     


    使用双向循环链表实现

    ArrayList,LinkedList与Vector的区别?
    ArrayList和Vector都是使用数组存储,LinkedList使用双向循环链表实现
    查询时ArrayList和Vector快,数据增加和删除LinkedList快
    ArrayList是线程不安全,Vector线程安全(JDK1.5提供了用于并发的API)

     

     

    2,Set接口:

     


    不可重复,不保证顺序

    HashSet:判断元素是否重复,取决于元素的equlas和hashCode

    TreeSet:保证顺序,依据:1,元素实现了Comparable接口 2,构造方法传入Comparator

    3,Map接口:存储键值对
    HashMap:键是否重复取决于键的equlas和hashCode
    put(k,v)
    v get(k)
    Collection values()
    Set keySet()
    Set<Map.Entry<K,V>> entrySet()

    Hashtable
    Properties

     

     

    4, Collections,提供若干的针对集合操作方法

     

     

     

    任务:
    1,现在有一个map集合如下:
    Map<Integer,String> map = new HashMap<Integer, String>();
    map.put(1, "张三");
    map.put(2, "李四");
    map.put(3, "王麻子");
    map.put(4, "老谭");
    要求:
    1.遍历集合,并将序号与对应人名打印。
    2.向该map集合中插入一个编码为5姓名为"蜗牛学院"的信息
    3.移除该map中的编号为4的信息
    4.将map集合中编号为3的姓名信息修改为"王五"

    public class job {
              public static void main(String[] args){     	  
    	      Map<Integer,String> map=new HashMap<>();      
    	        map.put(1, "张三");
    	        map.put(2, "李四");
    	        map.put(3, "王麻子");
    	        map.put(4, "老谭");       
    	   //1,     
    	       Set<Map.Entry<Integer, String>> set=map.entrySet();
    	       for (Entry<Integer, String> entry : set) {
    			System.out.println(entry);
    		}	       
    	   //2,
    	       map.put(5, "woniu");
    	   //3,
    	       map.remove(4);
    	   //4
    	       map.put(3, "王五");	     
    	       for (Entry<Integer, String> entry : set) {
    			System.out.println(entry);	
    }
    }}
    

      

     

     

    2,随机产生1000个1-10之间的整数,统计其出现的次数

    public class Job2 {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		  Map<Integer,Integer> map=new HashMap<>();		  
    		 int[] z=new int[10];
    		 for(int i=0;i<10;i++){
    			 z[i]=0;
    		 }		 
    		  for(int i=0;i<1000;i++){
    			  int x=(int)(Math.random()*10+1);
    			  
    			  map.put(x,z[x-1]++);			  
    		  }
    		  Set<Entry<Integer, Integer>> set=map.entrySet();
    	       for (Entry<Integer, Integer> entry : set) {
    			System.out.println(entry);
    		}		  
    	}
    }
    

      


    3,从键盘输入若干用户的姓名,按照姓氏统计人数

    public class job3 {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Map<String,Integer> map=new HashMap<>();
    		Set<String> keys = map.keySet();		
    		Scanner scanner = new Scanner(System.in);			
    		while (true) {
    			System.out.print("请输入姓名");			
    			String name=scanner.next();
    			String x=name.substring(0, 1);			
                if(!(keys.contains(x))){
    				map.put(x, 1);				
    			}else{
    				map.put(x, map.get(x)+1);		
    			}          
                Set<Entry<String, Integer>> set=map.entrySet();
     	       for (Entry<String, Integer> entry : set) {
     			System.out.println(entry);
     		}			
    		}		  
    	}
    }
    

      


    4 ,定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素,程序最终输出结果为:“a = 1,b = 2,c = 2,d = 1”

    public class Job4 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
            List<String>  list=new ArrayList<>();
            Map<String,Integer> map=new HashMap<>();
            Set<String> keys = map.keySet();        
    		list.add("abc");
    		list.add("ca");		
    		for(int i=0;i<list.size();i++){
    		int a=0;
    		int b=1;
    		for(int j=0;j<list.get(i).length();j++){
    		String string=list.get(i).substring(a++, b++);
    		System.out.println(string);
            if(!(keys.contains(string))){
    			map.put(string, 1);			
    		}else{
    			map.put(string, map.get(string)+1);		
    		} 
    	}  }		
    		Set<Entry<String, Integer>> set=map.entrySet();
    	       for (Entry<String, Integer> entry : set) {
    			System.out.println(entry);
    		}        
    	}
    }
    

      

    5,
    1.地铁站编号和站名对应关系如下:
    1=天府广场
    2=省体育馆
    3=倪家桥
    4=火车南站
    5=孵化园
    6=世纪城
    7=天府三街
    8=天府五街
    //....
    将以上对应关系的数据存储到map集合中,key:表示站编号,value:表示站名,并遍历打印(可以不按顺序打印):
    2.计算地铁票价规则:
    总行程 3站内(包含3站)收费3元,
    3站以上但不超过5站(包含5站)的收费4元,
    5站以上的,在4元的基础上,每多1站增加2元,
    10元封顶;
    3.打印格式(需要对键盘录入的上车站和到达站进行判断,如果没有该站,提示重新输入,直到站名存在为止):
    注意:每站需要2分钟
    请输入上车站:
    您输入的上车站:科技馆 不存在,请重新输入上车站:
    天府广场
    请输入到达站:
    您输入的到达站:科技馆 不存在,请重新输入到达站:
    孵化园
    从天府广场到孵化园共经过4站收费4元,大约需要 8分钟

  • 相关阅读:
    PNG文件格式具体解释
    opencv2对读书笔记——使用均值漂移算法查找物体
    Jackson的Json转换
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 单词接龙
  • 原文地址:https://www.cnblogs.com/suxiao666/p/11372734.html
Copyright © 2011-2022 走看看