Java集合
java集合接口(接口不能直接实例化、要实例化他的子类):
- Collection 接口
- List接口
- Set接口
- Iterator接口
- Map接口
接口之间的关系图
集合
- 1.集合可以理解为一个动态的对象数组,不同的是集合的对象内容可以任意扩充
- 2.集合的特点:
性能高,容易扩展和修改List接口
List继承自Collection - 1.List接口可以存放任意的数据,而且在List接口中内容是可以重复的
- 2.List接口常用子类
- Arraylist
- Vector
Arraylist和Vector的实现差不多,他们之间的区别就是
- Arraylist:采用异步处理方式,性能高,属于非线程安全。
- Vector:采用同步处理方式,性能低,属于线程安全。
ArrayList的简单实例
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//List是一个接口,必须实例化其子类。
List<String> list=new ArrayList<String>();
//集合使用add添加
list.add("添加字符串");
list.add("A");
list.add("B");
list.add("C");
for (int i = 0; i <list.size(); i++) {
//集合使用get方法来获取元素内容。
System.out.println(list.get(i));
}
//remove删除操作
list.remove(0);
System.out.println("删除后的操作");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("判断集合是否为空"+list.isEmpty());
//indexOf返回值是元素的位置。
System.out.println("判断元素是否存在,例如C: "+list.indexOf("C"));
}
}
Set接口
- 1.Set接口中不能加入重复元素,但是可以排序
- 2.常用子类:HashSet 和TreeSet
HashSet:无順序性,查找速度快
(注意相同多个D,set只会读取一个)
TreeSet:有排序性(依字母),由紅黑樹所建
import java.util.TreeSet;
public class SetTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Set<String> set=new HashSet<String>();
Set<String> set=new TreeSet<String>();
set.add("2");
set.add("4");
set.add("1");
set.add("31");
set.add("a");
set.add("D");
set.add("D");
System.out.println(set);
}
}
Iterator接口
1.集合输出的标准操作:标准做法,使用Iterator接口
2.操作原理:Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。
Iterator的实例化比较特别:是通过集合来获得他的一个对象,来实例化。
hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true
next() :返回下一个元素
package com.zsz.develop;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> list=new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
//使用Iterator标准输出格式来输出
Iterator<Integer> iterator=list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Map接口
1.保存形式:是以Key—value对的方式来保存
2.常用子类
- HashMap:无序存放,KEY不允许重复、
- Hashtable:无序存放,KEY不允许重复、
在list,set中添加数据都是使用add,而map是使用put添加数据。
通过map.get()可以得到Key中的Value。
要得到所以的键:Map.keySet() 返回类型是set<>;
要得到所以的值:Map.Value 返回类型是Collection<>;
map实例
package com.zsz.develop;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//键值对的形式来存储数据
Map<String, String> map=new HashMap<String, String>();
map.put("key1", "first");
map.put("key2", "first2");
map.put("key3", "first3");
map.put("key4", "first4");
//得到所以的键
Set<String> set=map.keySet();
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("上面为全部键,下面为全部值");
//得到所有的值
Collection<String> collection=map.values();
Iterator<String> i=collection.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
//判断是否存在键
System.out.println("是否存在键: "+map.containsKey("key1"));
//判断是否存在值
System.out.println("是否存在值: "+map.containsKey("first1"));
}
}