7.18java学习笔记——集合

集合类

一、ArrayList(队列)

1、需要引入包:import java.util.*;

2、创建一个队列:

ArrayList<数据类名> list = ArrayList<数据类名>();

3、特点:一个大小可以变化的数组,是线性的,有下标,有序的,先进先出,并且是可以重复的。

4、添加元素:list.add( );[另外,JDK中还提供了许多处理队列的方法,需要时,自己寻找]

5、三种遍历队列的方式:

(1)、通过下标遍历:

示例:

扫描二维码关注公众号,回复: 1331003 查看本文章

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);

}

}

}

猜你喜欢

转载自yuyongjia.iteye.com/blog/1600437