Map集合、List集合、Array数组基础知识整理

一、Map集合

HashMap与HashTable区别:

(1)HashMap是非线程安全的,HashTable是线程安全的,HashMap效率比HashTable的要高。

(2)HashMap的键和值都允许有null存在,而HashTable则都不行。

Map里面的常用方法:

 Map集合:该集合存储键(K)值(V)对,一对一往里存,而且要保证键的唯一性。 
    1、添加 
        put(K key,V value) 
        putAll(Map<? extends K,? extends V> m) 
    2、删除 
        clear() 
        remove(Object key) 
    3、判断 
        containsValue(Object value) 
        containsKey(Object key) 
        isEmpty() 
    4、获取 
        get(Object key) 
        size() 
        values() 

1、遍历集合

Map<String, String> tempMap = new HashMap<String, String>();  
		  tempMap.put("a","APPLE");  
		  tempMap.put("b","BOOK");  
		  tempMap.put("c","COOLER");

		  Iterator<String> it=tempMap.keySet().iterator();

方式1  迭代遍历

while (it.hasNext()) {
			Object key=it.next();
			System.out.println(key+"  "+tempMap.get(key));
		}
方式2  for循环遍历
for(String key : tempMap.keySet()){
			System.out.println(tempMap.get(key));
		}

结果如下


二、List集合

List和Set的比较:

1、List,Set都是继承自Collection接口
2、Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 它的值不能重复;
     List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。它的值可以重复;

3、List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet

List的一些属性与方法:

List<String> list=new ArrayList<String>();
		 //添加方法
		 list.add("第一个元素");
		 list.add("第二个元素");
		 list.add("第三个元素");
		 list.add("第四个元素");
		 //循环list集合  list长度方法size()
		 for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		} 

         

或者迭代遍历

 for (Iterator i=list.iterator(); i.hasNext();) { //for循环迭代
					String li = (String) i.next();
					System.out.println(li);
				}
        		//或者while迭代
        		Iterator i=list.iterator();
        		while (i.hasNext()) {
        			String li = (String) i.next();
					System.out.println(li);
				}

             //删除方法

  System.out.println("===========================");
		 System.out.println("移除之后:");
		 list.remove("第二个元素");
		 for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i));
			}

            

             //判断集合中是否包含某个值

System.out.println("============================");
		 System.out.println("判断集合中的某个值是否存在:");
		if(list.contains("第二个元素")){
			System.out.println("包含‘第二个元素’");
		}else {
			System.out.println("不包含‘第二个元素’");
		}
		if(list.contains("第四个元素")){
			System.out.println("包含‘第四个元素’");
		}

               

   //判断集合是否为空                list.isEmpty()
            //l获取指定下标的元素值        ist.get(index)
         System.out.println("============================");
		 System.out.println("用set方法更新某个指定元素");
		//用set方法更新某个指定元素   不可以用list.set(3, "***");这样会报异常,因为list长度只有2
		list.set(0, "插入的元素");
		 for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i));
			}
            
 //清空list集合
                 System.out.println("============================");
		 System.out.println("用set方法更新某个指定元素");
		//用set方法更新某个指定元素
		list.set(0, "插入的元素");
		 for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i));
			}
        

三、数组

//以字符串数组为例  创建数组的几种方式

1、String[] str=new String[5];
2、String[] str=new String[]{"a","b"};

3、String[] str={"a","b"};

//数组的冒泡排序

//冒泡排序  外层循环N-1   内层循环N-1-i

int[] a = { -1, 20, 0,200, 9, 10, 90, -100 };
		int b = 0;
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = 0; j < a.length - 1-i; j++) {
				if (a[j] > a[j + 1]) {
					b = a[j];
					a[j] = a[j + 1];
					a[j + 1] = b;
				}
			}
			System.out.print(" " + b);

		}


//把一个数组复制到另一个数组

System.out.println("=================================");
		System.out.println("以下是数组的复制");
		//数组的复制
		int[] firstArray={1,3,2,5,6,4};  
	      
	    //把firstArray复制给lastArray  
	    int[] lastArray=Arrays.copyOf(firstArray, 6);  
	    int[] lastArray2=new int[6];  
	      
	    for(int i=0;i<lastArray.length;i++){  
	    	lastArray2[i]=lastArray[i];
	        System.out.print(lastArray[i]+" ");  
	    } 

    
    //数组排序  sort()方法
	    System.out.println("对lastArray2数组排序:"); //此时lastArray2的元素与firstArray数组元素相同
		Arrays.sort(lastArray2);
		 for(int i=0;i<lastArray2.length;i++){  
		       System.out.print(lastArray2[i]+" ");  

		  } 

        

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值