java集合(list, set, map)常用方法

java集合(list, set, map)常用方法

1.

集合:有一堆数据要存:

[name='小赵' , age=18, sex='女']

[name='小钱' , age=19, sex='女']

[name='小孙' , age=20, sex='女']

[name='小李' , age=21, sex='女']等等,

这样一条一条的数据就能够用集合存起来,成为集合的一条条记录,

例如用list来存,存的形式就如下:

list = {[name='小赵' , age=18, sex='女'], [name='小钱' , age=19, sex='女'], [name='小孙' , age=20, sex='女'], [name='小李' , age=21, sex='女']};

然后可以根据list.get(i)来分别取值(记录)啦。

2.

List特点:元素有放入顺序,元素可重复,因为有序,可以用下标来取得想要的值。

Set特点:元素无放入顺序,元素不可重复,因为无序,无法用下标来取得想要的值。

Map特点:元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Key(键)唯一,重复会把前面的覆盖掉。用键取值,不用下标。

3.

list常用方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Iterator;

public class TestList {
    public static void main(String[] args){
        List<String> testList = new ArrayList<String>();
        testList.add("索引0");//添加,下标从0开始
        testList.add("索引1");
        testList.add("索引2");
        testList.add("索引3");
        testList.add("索引4");
        testList.add("索引0");//索引5
        
        /*******1根据元素索引位置(查看元素索引)********/
//        System.out.println(testList.indexOf("索引0"));//查看元素索引,输出 0
//        System.out.println(testList.lastIndexOf("索引0"));//查看元素索引,输出 5
        
        /************2获取元素************/
//        String str = testList.get(1);//获取元素,索引1
//        System.out.println(str);
        
        /**********3删除************/
//        System.out.println(testList.remove(2));//删除,输出索引2
//        System.out.println(testList.remove("索引2"));//删除,输出true
        
        /*********4遍历***********/
        for(String s : testList){//遍历方法1
            System.out.println(s);
        }
        
//        for(int i=0;i<testList.size();i++){//遍历方法2
//            System.out.println(testList.get(i));
//        }
//        System.out.println(testList.size());//6,size()值为元素个数6
        
//      Iterator it = testList.iterator();//遍历方法3
//      while(it.hasNext()) {//迭代器遍历
//          Object obj = it.next();
//          System.out.println(obj);
//      }
        
        /************5是否包含某个元素*************/
//        if(testList.contains("索引1")){
//            System.out.println("包含");//输出包含
//        }else{
//            System.out.println("不包含");
//        }
//        System.out.println(testList.contains("索引1"));//输出true
        
        /************6替换(根据下标索引)******************/
//        System.out.println(testList.set(5,"索引5"));//根据索引改值,输出索引0,先输出后变值
//        System.out.println(testList.get(5));//输出索引5
        
        /*************7添加(根据下标添加,插入)************/
//        testList.add(5,"索引5");//根据索引加值,输出索引5,原来索引5位置和之后的向后移一位
//        System.out.println(testList.get(5));//输出索引5
//        System.out.println(testList.get(6));//输出索引0
        
        /***********8截取(包前不包后)************/
//        List<String> list1 = new ArrayList<String>();
//        list1=testList.subList(1, 4);//截取,输出索引1,索引2,索引3。包前不包后(下标)
//        for(String s : list1){
//            System.out.println(s);
//        }
        
        /*********9是否为空**********/
//        System.out.println(testList.isEmpty());//判断是否为空,输出false
        
        /********10对列表元素进行迭代返回Iterator集合对象(常用于遍历)**************/
//        Iterator it = testList.iterator();//见遍历
//        System.out.println(testList.iterator());//这么输出没啥意思,只是看看输出结果,返回Iterator集合对象,输出java.util.ArrayList$Itr@15db9742
        
        /*********11将集合转换为字符串**********/
//        String str=testList.toString();//转换成字符串不是数组,输出[索引0, 索引1, 索引2, 索引3, 索引4, 索引0]
//        System.out.println(str);
        
        /*********12将集合转换为数组***********/
//        System.out.println(testList.toArray()[1]);//转换成数组,输出索引1
//        Object[] obj=testList.toArray();//转换成数组
//        System.out.println(obj[1]);//输出索引1
        
        /********13去重复***********/
        //第一种方法通过循环做, 根据remove方法去重复.
//        for (int i = 0; i <testList.size()-1; i++) {
//            for (int j = testList.size()-1; j >i; j--) {
//                if (testList.get(j).equals(testList.get(i))) {
//                    testList.remove(j);
//                }
//            }
//        }//关于控制台输出的[索引0, 索引1, 索引2, 索引3, 索引4]这种形式不是数组,是集合
//        System.out.println(testList);//输出[索引0, 索引1, 索引2, 索引3, 索引4]去掉了重复的"索引0"
        
        //第二种方法通过frequency方法去重复
//        List<String> paramList=new ArrayList<String>();
//        for (String s:testList) {
//            if (Collections.frequency(paramList, s)<1) {
//                paramList.add(s);
//            }
//        }
//        System.out.println(paramList);//输出[索引0, 索引1, 索引2, 索引3, 索引4]去掉了重复的"索引0"

        
    }

}

set常用方法:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class TestSet {
    public static void main(String args[]){
        Set<String> testSet = new HashSet<String>();
        testSet.add("索引0");//添加,下标从0开始
        testSet.add("索引1");
        testSet.add("索引2");
        testSet.add("索引3");
        testSet.add("索引4");
//        testSet.add("索引0");//false,testSet集合里没它,.size()还是5
//        System.out.println(testSet.add("索引0"));//false,不能添加重复数据
        /**********1集合大小*************/
//        System.out.println(testSet.size());//5
        
        /**********2哈希码值,固定的***********/
//        System.out.println(testSet.hashCode());
        
        /*************3删除*************/
//        testSet.remove("索引3");
        
        /************4清空*****************/
//        testSet.clear();
        
        /***********5遍历(无序(不能根据下标索引),不重复)************/
        //for-each遍历整个集合
//        for(String value : testSet) {//遍历方法1
//            System.out.println(value);
//        }
        
         //iterator方法
//         Iterator<String> value=testSet.iterator();//遍历方法2
//         while(value.hasNext()) {
//             String s=value.next();
//             System.out.println(s);
//         }
        
        /**********6是否包含***********/
//        System.out.println(testSet.contains("索引3"));//true
        
        /*******7是否为空*************/
//        System.out.println(testSet.isEmpty());//false
        
        /**********8集合转换成数组(数组可以下标遍历)********/
//        Object[] obj=testSet.toArray();
//        for(int i=0;i<obj.length;i++)
//            System.out.println(obj[i]);
        
        /**********9上 集合转换成字符串************/
        String str=testSet.toString();//转化的字符串使用逗号隔开的,输出[索引4, 索引3, 索引0, 索引2, 索引1]
        System.out.println(str);
        /**********9下 字符串转化成数组***************/
        String str2[]=str.split(",");
        System.out.println(str2[2]);
        
    }

}

map常用方法:
import java.util.Map.Entry;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestMap {
    public static void main(String []args){
        Map<String,String> testMap = new HashMap<String,String>();
//        Map testMap=new HashMap(); //这么写也可以
        testMap.put("00", "索引0");//添加,
        testMap.put("01", "索引1");
        testMap.put("02", "索引2");
        testMap.put("03", "索引3");
        testMap.put("04", "索引4");
        testMap.put("00", "索引5");//key唯一,重复会把前面的覆盖掉put(key,value)
//        System.out.println(testMap);//{00=索引5, 01=索引1, 02=索引2, 03=索引3, 04=索引4}
        
        /*********1集合大小**********/
//        System.out.println(testMap.size());//5,覆盖掉
        
        /**********2获取(根据 key,不根据下标)*************/
//        System.out.println(testMap.get("00"));//索引5
        
        /************3只获取value值***************/
//        Collection values = testMap.values();
//        System.out.println("map实例中所有value为:"+values);//map实例中所有value为:[索引5, 索引1, 索引2, 索引3, 索引4]
        
        /************4只获取key值***************/
//        Set set=testMap.keySet();
//        System.out.println("map实例中所有key为:"+set);//map实例中所有key为:[00, 01, 02, 03, 04]
        
        /*********5是否包含value**************/
//        System.out.println(testMap.containsValue("索引2"));//true
        
        /***********6是否包含key*************/
//        System.out.println(testMap.containsKey("03"));//true
        
        /*************7根据key获取value*************/
//        Object obj = testMap.get("02");
//        System.out.println("values为:"+obj);//values为:索引2
        
        /************8删除****************/
//        System.out.println(testMap.remove("00","索引0"));//false,没有这个
//        testMap.remove("00");
        
        /**********9清空***********/
//        testMap.clear();
        
        /*****************10合并***************/
//        Map<String,String> testMap2 = new HashMap<String,String>();
//        testMap2.put("00", "索引A");
//        testMap2.put("06", "索引B");
//        testMap2.put("07", "索引C");
//        testMap.putAll(testMap2);//key相同的,testMap被覆盖
//        System.out.println(testMap);//{00=索引A, 01=索引1, 02=索引2, 03=索引3, 04=索引4, 06=索引B, 07=索引C}
//        System.out.println(testMap2);//{00=索引A, 06=索引B, 07=索引C}
        
        /*****************11遍历*****************/
        Set kset = testMap.keySet();//方法1,将Map转成Set集合(keySet()),通过Set的迭代器取出Set集合中的每一个元素
        Iterator it = kset.iterator();
        while (it.hasNext()) {
            String key = (String)it.next();
            String value = testMap.get(key);
            System.out.println("key=" + key + " value=" + value);
        }
        
//         Collection col = testMap.values();//方法2,只有value,不太好
//         Iterator it = col.iterator();
//         while (it.hasNext()) {
//             String value = (String)it.next();
//             System.out.println(" value=" + value);
//         }
        
        
//        Set set = testMap.entrySet();//方法3,
//        Iterator it = set.iterator();
//        while (it.hasNext()) {
//             // 返回的是封装了key和value对象的Map.Entry对象
//             Entry en = (Entry)it.next();
//             // 获取Map.Entry对象中封装的key和value对象
//             String key = (String)en.getKey();
//             String value = (String)en.getValue();
//             System.out.println("key=" + key + " value=" + value);
//        }

        
    }

}

原文地址:https://www.cnblogs.com/zyhl/p/14410778.html