集合类
一、ArrayList(队列)
1、需要引入包:import java.util.*;
2、创建一个队列:
ArrayList<数据类名> list = ArrayList<数据类名>();
3、特点:一个大小可以变化的数组,是线性的,有下标,有序的,先进先出,并且是可以重复的。
4、添加元素:list.add( );[另外,JDK中还提供了许多处理队列的方法,需要时,自己寻找]
5、三种遍历队列的方式:
(1)、通过下标遍历:
示例:
for(int i=0;i<list.size();i++){
String str = list.get(i);
}
(2)、通过迭代器遍历:
示例:
//首先创建迭代器
Iterator<String> iter = list.iterator();
//判断迭代器中是否有元素
while(iter.hasNext()){
//如果有,就取出一个
String str = iter.next();
System.out.println(str);
}
(3)、通过加强for循环遍历:
示例:
//遍历3:加强for循环
for(String str:list){
System.out.println(str);
}
【解释:先创建一个String类型的变量str,从list中先取出第一个元素赋给str,当str被打印出来后(大括号中的语句执行了),从list中又提取出下一个元素】
二、HashSet(哈希set)
1、需要引入包:import java.util.*;
2、创建一个哈希set:
HashSet<数据类型> set = new HashSet<数据类型>();
3、特点:非线性的,无下标,不可以重复,内部存取的时候是无序的,长度可变。
4、添加元素:set.add( );
5、遍历方式(通过迭代器):
//首先创建一个迭代器
java.util.Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String str = iter.next();
System.out.println(str);
}
三、HashMap(哈希映射)
1、需要引入包:import java.util.*;
2、创建一个哈希映射:
HashMap<K,V> map = new java.util.HashMap<K,V>();
示例:
HashMap<Integer,String> map = new HashMap<Integer,String>();
3、哈希映射中的元素总是成对存在的,这一个对叫做健;
K<-------->V
基<-------->像
4、这种对应的关系是一一对应的,其中需要主要的是K是在set中的,故K不可以重复,但是V是可以重复的。
5、添加元素:Map.put(K,V);
6、遍历方式(通过加强for循环):
示例:
//首先得到所需要的装有健的基的set
Set<Integer> keys = map.keySet();
//遍历set,根据K得到与之对应的V
for(int num:keys){
String name = map.get(num);
}
两个小练习
1.给定任意int一维数组
a.去掉数组中的重复元素
b.给数组排序
public class main {
public static void main(String[] args) {
int[] a = new int[]{10,2,6,6,3,9,12,0,1,0,5,6};
//创建集合对象
java.util.HashSet<Integer> set = new java.util.HashSet<Integer>();
//装入元素
for(int i=0;i<a.length;i++){
set.add(a[i]);
}
//新建立一个数组,以接受除去相同数字的数组
int[] b = new int[set.size()];
//设定b数组的下表
int t = 0;
//遍历
java.util.Iterator<Integer> iter = set.iterator();
while(iter.hasNext()){
b[t++] = iter.next();
}
//用于数字交换的中间数字
int temp;
//用冒泡法对b数组进行排序
for(int i=0;i<set.size()-1;i++){
for(int j=i+1;j<set.size();j++){
if(b[i]>b[j]){
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
//输出b数组
for(int i=0;i<set.size();i++){
System.out.println(b[i]);
}
}
}
2.给定任意字符串String str = "iloveyou~china!我爱你,中国!我爱你!";
统计字符串中每个字符出现的次数
public class main {
static int[] state = new int[100000];
public static void main(String[] args) {
//定义一个字符串
String str = "iloveyou~china!我爱你,中国!我爱你!";
//创建映射对象
java.util.HashMap<Character,Integer> map = new java.util.HashMap<Character,Integer>();
//装入映射关系
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
int num = ++state[ch];
//装入映射
map.put(ch,num);
}
java.util.Set<Character> keys = map.keySet();
//遍历Set
for(char ch:keys){
//根据K得到对应的V
int num = map.get(ch);
System.out.println(ch+" "+num);
}
}
}