一、 集合定义:是指集中存放一组对象的一个对象。
二、 集合作用:相当于一个容器,提供了保存、获取、操作其它元素的方法。
三、 集合框架:该框架定义了一组接口和类,使得处理对象组更容易。
(一)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()方法
作用:用来查找集合中的最大值与最小值。