集合与泛型之集合概述

文章详细介绍了Java集合框架中的List接口,包括ArrayList和LinkedList的特性与使用场景,以及如何遍历集合和转换集合。此外,提到了Set接口的HashSet类和排序、查找及打乱元素次序的相关方法。
摘要由CSDN通过智能技术生成

一、 集合定义:是指集中存放一组对象的一个对象。

二、 集合作用:相当于一个容器,提供了保存、获取、操作其它元素的方法。


三、 集合框架:该框架定义了一组接口和类,使得处理对象组更容易。

        (一)Collection[最基本的接口]  对象用于存放一组对象。

                1. List 接口

                        (1)ArrayList类

                                是最常用的线性表实现类,通过数组实现的集合对象,其元素可以动态的增加和删除。

List<String> list=new ArrayList<>();

注意:ArrayList():创建一个空的数组线性表对象,默认初始容量为10。 

                        (2)LinkedList类

                                是线性表的实现,实现了线性表的所有操作,其中可以存储null元素。除实现List接口中的方法外,还定义了addFirst()、getFirst()、removeFirst()、addLast()、getLast()、removeLast()等方法。

                                LinkedList():创建一个空的链表,且LinkedList对象不需要指定初始容量。

                               注意:若经常在线性表的头部添加元素或在内部删除元素,应使用LinkedList。LinkedList同时实现了LIst接口和Queue接口。

                        (3)遍历集合元素(三种方法)

//第一种方法:使用简单的for循环
for(int i=0;i<bigCites.size();i++){
    System.out.println(bigCites.get(i)+" ");
} 
//第二种方法:使用增强的for循环
for(String city: bigCities){
    System.out.println(city);
} 
//第一种方法:使用迭代器
Iterator iterator=myLstiterator();//得到迭代器
while(iterator.has.Next()){
    System.out.println(iterator.next);
}

                        (4)数组转换为List对象

String[] str={"one","two","three","four"};
List<String> list=Arrays.asList(str);//将数组转换为列表
System.out.println(list);

java.util.Arrays类提供了一个asList()方法,实现将数组转换成List对象的功能。 该方法提供了一个从多个元素创建List对象的功能,它的功能与Collection接口的toArray()方法相反。

注意:Arrays.asList()方法返回的List对象是不可变的,如果对List对象进行添加、删除等操作,将会抛出异常。如果要实现对List对象的操作,可将其作为一个参数传递给另一个List构造方法,如下所示:

List<String> list=new ArrayList<>(Arrays.asList(str));

                        (5)集合转换

//将Queue对象转换为List
Queue<String>queue=new LinkedList<>();
queue.add("hello");
queue.add("world");
List<String>myList=new ArrayList(queue);
//将List对象转换为Set对象
Set<String> set=new HashSet(myList);

                2. Set 接口

                        (1)HashSet类

                                用散列方法存储元素,具有最好的存取性能,但元素没有顺序。

                               注意:默认初始容量为16,默认装填因子为0.75。

                                装填因子:决定何时对散列表进行再散列。

                        (2)TreeSet类

                                实现一种树集合,添加到TreeSet中的元素必须时刻比较的,即元素的类必须实现Comparable<T>接口。

                3.Queue 接口

        (二)Map[最基本的接口]  对象用于存放一组"关键字/值"的对象。

                        (1)HashMap类

                                HashMap类以散列方法存放“键/值“

                        (2)TreeMap类

                                TreeMap类实现了SortedMap接口,保证Map中的“键/值”对岸关键字升序排序。


四、Collection类

                1. 排序__sort()方法

                        

//倒序排序 
List<String> names=Arrays.asList("peter","anna","mike","xenia");
Collections.sort(names,(a,b)->b.compareTo(a));//使用Lambda表达式实现字符串倒序
names.forEach(System.out::println);

                2.查找__binarySearch()方法

List<Integer> list=Arrays.asList(5,3,1,7);
Collections.sort(list);
Integer key=4;
int pos=Collections.binarySearch(list,key);
if(pos<0){
            List<Integer> nlist=new ArrayList<>(list);
            nlist.add(-pos-1,key);
            System.out.println(nlist);
}

                3.打乱元素次序__shuffle()方法

Integer[] num=(1,3,5,6,4,2,7,8,9,10);
List<Integer> list=Arrays.asList(num);
//打乱顺序输出
Collections.shuffle(list,new Random());
System.out.println(list);

                4. 求极值__max()方法、 min()方法

                        作用:用来查找集合中的最大值与最小值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值