1.java集合框架(Java Colletion Framework):可以理解为用来在内存中存放一组对象的某种容器,就像之前的数组和自定义队列。
2.java中的集合框架是线性的数据结构,但是这些线性的数据结构分为两类:物理线性,逻辑线性。
3.java集合类主要在java.util.*包下,主要有一下几类:
1.List:有序的集合类(某种特定的顺序)
2.Set:是无序并且不重复数据的集合类
3.Map:键值对的集合类
例如:学号--->学生
身份证号---->人
4.Queue
4.List、Set和Map都是接口(Interface),不是具体的类实现。
List lst = new ArrayList();
这是我们平常经常使用的创建一个新的List的语句,在这里, List是接口,ArrayList才是具体的类。
5.java.util.Set接口的测试类
public class Test {
public static void main(String[] args) {
java.util.Set<String> set = createSet();
// 打印
printSet(set);
boolean b = deleteElement("c", set);
System.out.println("删除" + b);
printSet(set);
set.add("k");
set.add("i");
set.add("f");
set.add("e");
set.add("c");
set.add("b");
set.add("a");
printSet(set);
}
/**
* 实例化Set集合对象
*
* @return 返回实例化后初始化的集合对象
*/
public static java.util.Set<String> createSet() {
// 实例化一个List集合对象
java.util.Set<String> set = new java.util.HashSet<String>();
// 循环集合对象添加10个数据
for (int i = 0; i < 10; i++) {
char c = (char) (97 + i);
set.add(c + "");
}
return set;
}
/**
* 打印Set集合的方法
*
* @param Set要被打印的集合对象
*/
public static void printSet(java.util.Set<String> set) {
// 获取Set集合的迭代器
java.util.Iterator<String> iter = set.iterator();
// 开始遍历Set集合
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
*注意:第三次打印出来的数据有11个(a,b,c,d,e,f,g,h,i,j,k)
6.List的测试类
public class ListTest {
public static void main(String[] args) {
java.util.List<String> list = createList();
print(list);
}
/**
* 实例化list集合对象
*
* @return 返回实例化后初始化的集合对象
*/
public static java.util.List<String> createList() {
// 实例化一个List集合对象
java.util.List<String> list = new java.util.ArrayList<String>();
// 循环集合对象添加10个数据
for (int i = 0; i < 10; i++) {
char c = (char) (97 + i);
list.add(c + "");
}
return list;
}
/**
* 打印List集合的方法
*
* @param list要被打印的集合对象
*/
public static void print(java.util.List<String> list) {
// 循环打印
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
7.Map测试类
public class MapTest {
public static void main(String[] args) {
java.util.Map<Integer, String> map = createMap();
//打印
printMap(map);
//添加数据
System.out.println("添加数据");
map.put(10, "a");
map.put(20, "c");
map.put(30, "d");
map.put(40, "e");
map.put(1, "b");
map.put(0, "a");
map.put(5, "p");
//打印
printMap(map);
//删除数据
System.out.println("删除数据");
deleteElement(5,map);
//打印
printMap(map);
}
/**
* 实例化Map集合对象
*
* @return 返回实例化后初始化的集合对象
*/
public static java.util.Map<Integer, String> createMap() {
// 实例化一个Map集合对象
java.util.Map<Integer, String> map = new java.util.HashMap<Integer, String>();
// 循环集合对象添加10个数据
for (int i = 0; i < 10; i++) {
char c = (char) (97 + i);
map.put(i, c + "");
}
return map;
}
/**
* 删除一个指定对象值
*/
public static String deleteElement(Integer key,
java.util.Map<Integer, String> map) {
// 开始删除元素
String str = map.remove(key);
return str;
}
/**
* 打印Map集合的方法
*
* @param Map要被打印的集合对象
*/
public static void printMap(java.util.Map<Integer, String> map) {
// 得到一个Key的Set集合
java.util.Set<Integer> set = map.keySet();
// 获取Set集合的迭代器
java.util.Iterator<Integer> iter = set.iterator();
// 开始遍历Set集合
while (iter.hasNext()) {
// 获取Key值
Integer ie = iter.next();
// 输出
System.out.println("Key值:" + ie + "\t Value值是:" + map.get(ie));
}
}
}
8.去重和排序
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
public class SetTest {
public static void main(String[] args) {
int a[]={6,7,4,8,2,6,33,5,7,6,3,3,53,53,13};
Object b[] = new SetTest().quchong(a); for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+"\t");
}
}
public Object [] quchong(int a[]){
Set<Integer> set=new TreeSet<Integer>();
for (int i = 0; i < a.length; i++) {
set.add(a[i]);
}
Object b[] = set.toArray();
return b;
}
}