集合框架总结

常用的集合在系统中定义了3个接口,其区别为:
java.util.Set为无序的集合,里面不允许有相同的元素,当新加入的元素为已经存在,则不执行add方法。
java.util.List为有序线性的集合,类似于数组,是可以存在相同元素的。
java.util.Map为一个具有映射关系的集合,也是无序的,可以存在相同的value值,但不能有相同的key值,且当加入新元素时,如果key值已经存在,
则新元素的value值会替代原来该key值所对应value的值。
这三者的常用的实现类分别为:java.util.hashset,java.util.ArrayList,java.util.hashmap
目前用到比较常用的set接口的实现方法有:增 add(E O),删remove(Object o),clear(),判断是否为空isEmpty(),等等
常用的List接口的实现方法有:add(E e),add(int index,E element),remove(int index),remove(Object o),clear(),
list实现类ArrayList其实就是一个队列。
而常用的Map接口的实现方法有:clear(), Set<K> keySet(),isEmpty(),get(Object key),put(K key,V value)。
这些方法只要我们经常用才会比较熟练。下面就用具体的例子来运用上面这些方法吧。
1.1.给定任意int一维数组
a.去掉数组中的重复元素
b.给数组排序
因为考虑到不能有相同元素存在,所以必须要用到Set,具体代码如下:
import java.util.HashSet;
import java.util.Iterator;

public class ArrayTest {

/**
* 用hashset来实现
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个一维数组
int array[]={132,2,3,1,2,3,5,623,213,3,2,6,7};
HashSet<Integer>set=new HashSet();//实例化一个hashset对象
//将数组元素加入到hashset里面
for(int i=0;i<array.length;i++){
set.add(array[i]);
}
//给set排序
Iterator<Integer> it=set.iterator();
ArrayList <Integer>list=new ArrayList<Integer>();//定义一个新队列,用来存储set里面的元素
while(it.hasNext()){//如果为true则执行
int num=it.next();
list.add(num);
}
//给队列排序
for(int i=0;i<list.size();i++){
for(int j=i+1;j<list.size();j++){
if(list.get(i)>list.get(j)){
int temp=list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
//打印队列元素
for(int i=0;i<list.size();i++)
System.out.println("元素:"+list.get(i));
}

}
运行结果为:
元素:1
元素:2
元素:3
元素:5
元素:6
元素:7
元素:132
元素:213
元素:623

=============================================================================================
2.给定任意字符串String str = " ";
统计字符串中每个字符出现的次数
分析:因为每个字符会有自己的次数,所以是一个映射关系,所以需要用到Map
代码如下:
package cn.java.test;

import java.util.HashMap;

public class Stringtest {

/**
* @
*/
public static void main(String[] args) {
//先创建一个hashmap的对象
HashMap<Character,Integer>map=new HashMap<Character,Integer>();
//先任取一段字串
String str=new String("sjfksfksafkekjfdhksdfiokvshslfjsahfafojrgdiahg");
for(int i=0;i<str.length();i++){
int count=0;//定义计数器为0
char c=str.charAt(i);
for(int j=0;j<str.length();j++){
if(str.charAt(j)==c){
count++;//计数器+1
}
}
map.put(c, count);
}
//遍历
//得到装有K的Set
java.util.Set<Character> keys = map.keySet();
//遍历Set
for(char c:keys){
//根据K得到对应的V
int num = map.get(c);
System.out.println(c+"字符的次数为:"+num);

}

}

}
运行结果为:
f字符的次数为:8
g字符的次数为:2
d字符的次数为:3
e字符的次数为:1
a字符的次数为:4
o字符的次数为:2
l字符的次数为:1
j字符的次数为:4
k字符的次数为:6
h字符的次数为:4
i字符的次数为:2
v字符的次数为:1
s字符的次数为:7
r字符的次数为:1
=====================================================================================================
所以说还是只有用过才知道。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值