从入门到放弃的第三周(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分钟

原文地址:https://www.cnblogs.com/suxiao666/p/11372734.html