Java基础知识学习——集合二

南笙酒味 提交于 2020-02-07 21:36:44

知识点汇总

map:双列数据存储key-value数据
①map中key无序不可重复使用set存储所有的key,
②value无序可重复,使用collection存储
一个键值对构成一个Entry对象
HashMap:(map的主要实现类)线程不安全的可存储null,LinkedHashMap:按照添加顺序。
TreeMap:按添加的key-value对进行排序,按key去排序,Hashtable:线程安全的不可存储null。
properties常用来处理配置文件。
代码示例:

public class MapTest {
    public static void main(String[] args) {
        //map中的常用方法
        Map map=new HashMap();
        //put 添加数据putAll(Map m)
        map.put("a",1);
        map.put("b",2);
        map.put("c",2);
        map.put("d",3);
        System.out.println(map);
        //remove按照指定的key移除指定键值对
        map.remove("c");
        System.out.println(map);
        //clear()清空当前Map中的所有数据
        //map.clear();
        System.out.println(map.size());
        System.out.println(map.isEmpty());
        //get()查询指定key的对应value
        System.out.println(map.get("a"));
        //containsKey()判断是否包含指定的key
        System.out.println(map.containsKey("b"));
        //containsValue()判断是否包含指定的value
        System.out.println(map.containsValue(3));
        //equals(Object obj)判断当前Map和参数对象是否相等
        /*
        * 遍历Map中的数据元视图操作的方法:
        * Set keySet():返回所有key构成的Set集合
        * Collection values():返回value构成的Collection集合
        * Set entrySet():返回key-value对构成的Set集合
        * */
        Map map1=new HashMap();
        map1.put("q",11);
        map1.put("w",22);
        map1.put(99,33);
        map1.put("r",44);
        map1.put("t",55);
        //遍历所有的key集
        Set set=map1.keySet();
        Iterator iterator=set.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+"\t");
        }
        //遍历所有的value集
        Collection collection=map1.values();
        for(Object object:collection){
            System.out.println(object);
        }
        //遍历所有的key-value
        Set set1=map1.entrySet();
        Iterator iterator1=set1.iterator();
        while (iterator1.hasNext()){
            Object obj=iterator1.next();
            Map.Entry entry=(Map.Entry)obj;
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }

        /*
        * TreeMap中添加数据要求key必须是同一类按照key进行自然排序和定制排序
        * */
        TreeMap treeMap=new TreeMap();
        Man man1=new Man("Roy",12);
        Man man2=new Man("Hew",12);
        Man man3=new Man("Jerry",12);
        treeMap.put(man1,55);
        treeMap.put(man2,66);
        treeMap.put(man3,77);
        //遍历
        Set set2=treeMap.entrySet();
        Iterator iterator2=set2.iterator();
        while (iterator2.hasNext()){
            Object object= iterator2.next();
            Map.Entry entry=(Map.Entry)object;
            System.out.println(entry.getKey()+"-------"+entry.getValue());
        }
        //定制排序
        TreeMap treeMap1=new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof Man && o2 instanceof Man){
                    Man m1=(Man)o1;
                    Man m2=(Man)o2;
                    //按照年龄排序
                    return Integer.compare(m1.getAge(),m2.getAge());
                }
            throw new RuntimeException("类型不一致");
            }
        });

    }
}

创建Man.java

public class Man implements Comparable{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Man(String name, int age) {

        this.name = name;
        this.age = age;
    }

    public Man() {

    }

    /**
    *@ClassName Man
    *@Description 重写的compareTo方法用于在TreeMap中进行排序输出
    *@Param [o]
    *@Return int
    *@Date 2020/2/7 18:56
    *@Author Roy
    */
    @Override
    public int compareTo(Object o) {
        if(o instanceof Man){
            Man man=(Man)o;
            int com=this.name.compareTo(man.name);
            if(com!=0){
                return com;
            }else {
                return Integer.compare(this.age,man.age);
            }
        }
        throw new RuntimeException("输入的类型不符合");
    }

    @Override
    public String toString() {
        return "Man{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Collections:操作Collection、Map的工具类

代码示例:

public class CollectionsTe {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(12);
        list.add(67);
        list.add(112);
        list.add(-2);
        list.add(92);
        //reverse()反转list
        Collections.reverse(list);
        //shuffle()随机排序
        Collections.shuffle(list);
        //sort()自然排序
        Collections.sort(list);
        //swap()交换指定索引处的值
        Collections.swap(list,2,3);
        //frequency()特定值出现的频率
        Collections.frequency(list,92);
        //copy
        List dest=Arrays.asList(new Object[list.size()]);
        Collections.copy(dest,list);
        //构造线程安全的List
        List list1=Collections.synchronizedList(list);
    }
}
  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!