欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-10 11:17:46
...

知识点汇总一

集合的概述:集合、数组都是对多个数据进行存储操作的结构简称java容器
Java集合可分为Collection和Map两种体系:
Collection接口 单列数据存取一组对象的方法的集合:
一:List元素有序可重复的集合存储有序的可重复的数据
ArrayList,LinkedList,Vector
二:Set元素无序不可重复的集合存储无序的不可重复的数据
HashSet,LinkedHashSet,TreeSet
集合元素的遍历操作使用Iterator接口
注意:向Collection接口的实现类的对象中添加数据obj时,需要obj所在类重写equals()方法。
Map接口双列数据具有映射关系“key-value”对的集合
HashMap,LinkedHashMap,TreeMap,HashTable,Properties
代码示例:

public class CollectionTest {
    public static void main(String[] args) {
        /*
        * Collection集合中的常用方法
        * */
        Collection collection=new ArrayList();
        //add(object e)
        collection.add("qw");
        collection.add(121);
        collection.add(new Date());
        //获取元素的个数
        System.out.println(collection.size());
        //addAll(Collection coll)
        Collection collection1=new ArrayList();
        collection1.add(99);
        collection1.add("hi");
        collection.addAll(collection1);
        System.out.println(collection.size());
        //clear()清空当前集合
        collection1.clear();
        System.out.println(collection1.isEmpty());
        //isEmpty()判断当前集合是否为空
        System.out.println(collection1.isEmpty());
        //Contains(Object obj)判断当前集合是否包含obj
        collection.contains(123);
        //ContainsAll(Collection coll)判断形参coll中的所有元素是否都在当前集合中
        System.out.println(collection.containsAll(collection1));
        //remove(Object obj)移除原有数据
        collection.remove(121);
        //remove(Collection coll)移除集合coll中的所有元素
        //retainAll(Collection coll)求交集
        System.out.println(collection.retainAll(collection1));
        //equals(Object obj)判断是否相同且有序
        //hashCode返回当前对象的hash值
        System.out.println(collection.hashCode());
        //集合——》数组toArray()
        Object[] ar=collection.toArray();
        for (int i = 0; i < ar.length; i++) {
            System.out.println(ar[i]);
        }
        //数组-》集合
        List<String> list=Arrays.asList(new String[]{"qq","hh"});
        List list1=Arrays.asList(new Integer[]{777,666});
        System.out.println(list1);
        System.out.println("***************************");
        //iterator():返回iterator接口的实例用于遍历集合元素
        Collection collection2=new ArrayList();
        collection2.add("asdf");
        collection2.add(567);
            Iterator iterator=collection2.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
            //iterator中的remove()方法
        collection2.add("sky");
            Iterator iterator1=collection2.iterator();
            while (iterator1.hasNext()){
                Object obj=iterator1.next();
                if("sky"==obj){
                    iterator1.remove();
                }
            }
            Iterator iterator2=collection2.iterator();
            while (iterator2.hasNext()){
                System.out.println(iterator2.next());
            }
        //jdk 5.0 新增了foreach循环用来遍历数组,集合
        //格式:for(集合元素类型   局部变量 : 集合对象)
        for(Object coll : collection2){
            System.out.println(coll);
        }

    }
}

知识点汇总二

1.List接口:存储有序的、可重复的数据。
ArrayList线程不安全,效率高、底层使用Object[] elementData数据。
LinkedList底层使用双向链表对于频繁的插入删除操作使用此类效率较高。
Vector线程安全效率低,底层使用Object[] elementData数据。
2.Set接口:存储无序的,不可重复的数据。
HashSet:作为Set的主要实现类线程不安全的可以存储null值。
LinkedHashSet:作为HashSet的子类。
TreeSet:可按照指定属性进行排序。
注意:向Set中添加的数据所在类一定要重写hashCode()方法和equals()方法。
代码示例:

public class CollectionSub {
    public static void main(String[] args) {
   //List接口中的常用方法
        ArrayList arrayList = new ArrayList();
        arrayList.add(12);
        arrayList.add(45);
        arrayList.add("He");
        arrayList.add("She");
        arrayList.add("who");
        //add()方法
        arrayList.add(2, "insert");
        List list = Arrays.asList(4, 5, 6);
        arrayList.addAll(3, list);
        //get()方法
        System.out.println(arrayList.get(3));
        //indexOf()返回首次出现的位置
        //lastIndexOf()最后一次出现的位置
        System.out.println(arrayList.indexOf(45));
        //remove()移除指定元素
        System.out.println(arrayList.remove(0));
        //subList()返回指定位置区间的子串
        System.out.println(arrayList.subList(3, 6));
        //set()修改指定位置的元素
        arrayList.set(2, "change");
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        System.out.println("************************");
        for (Object obj : arrayList) {
            System.out.println(obj);
        }
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        System.out.println("****************Set接口***********************");
        Set set = new HashSet();
        set.add(22);
        set.add(11);
        set.add("hello");
        set.add("we");
        Iterator iterator1 = set.iterator();
        while (iterator1.hasNext()) {
            System.out.println(iterator1.next());
        }
        //LinkedHashSet
        Set set1 = new LinkedHashSet();
        set1.add(22);
        set1.add(11);
        set1.add("hello");
        set1.add("we");
        Iterator iterator2 = set1.iterator();
        while (iterator2.hasNext()) {
            System.out.println(iterator2.next());
        }
        /*
         * TreeSet:向其中添加数据要求是相同类的对象
         * 两种排序方式:自然排序(实现Comparable接口)和定制排序(实现Comparator)
         * */
        //自然排序
        TreeSet treeSet = new TreeSet();
        treeSet.add(23);
        treeSet.add(-11);
        treeSet.add(33);
        treeSet.add(423);
        //定制排序
        Comparator comparator=new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return 0;
            }
        };
        TreeSet treeSet1=new TreeSet(comparator);
    }
}