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分钟

  • 相关阅读:
    IDEA一些介绍
    win32控制台程序使用CfileDialog进行文件读取
    判断GPS、网络是否开启
    使用高德地图SDK获取定位信息
    #子线程消息被阻挡
    strlen与sizeof
    C++中路径操作
    20155235 《网络攻防》 实验一 逆向及Bof基础实践说明
    20155235 《信息安全系统设计基础》课程总结
    2017-2018-1 20155235 《信息安全系统设计基础》第十四周学习总结
  • 原文地址:https://www.cnblogs.com/suxiao666/p/11372734.html
Copyright © 2011-2022 走看看