Java集合框架:两种类型的容器:集合Collection,存储一个元素集合;图Map,存储键、值对映射。
集合框架:
Collection有三种接口List、Set、Queue
- List接口:
元素顺序有下标,查找效率高,插入删除效率低下,内容可以重复
void add(int index, E element):向指定位置处添加元素,无返回值类型
get(int index):
indexOf(Object o):
E remove(int index):
E set(int index,E element):
Lst接口的三个常用实现类:
ArrayList 数组实现,查询快,增删慢
LinkedList 链表实现,查询慢,增删快
Vector 数组实现,查询快,增删慢
ArrayList的增删改查操作
public class Test {
public static void main(String [] args){
/**
* 集合框架
* 集合:一个对象,用来储存其他多个对象
* ArrayList 能更好的代替数组
*/
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");
for(String str:list){
System.out.println(str);
}
//第二种遍历
String[] strArray =new String[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]);
}
//第三种遍历,使用迭代器进行相关遍历
Iterator<String> ite =list.iterator();
while (ite.hasNext()){
System.out.println(ite.next());
}
// ArrayList的增删改查,LinkedList和Vector的增删改查是一样的
ArrayList<String> list1 = new ArrayList<String>();
list1.add("123");
list1.add("456");
list1.add(0,"昨天周六");
list1.set(1,"不上课");
System.out.println(list1);
System.out.println(list1.get(1));
System.out.println(list1.remove(2));
for (String string:list1){
System.out.println(string);
}}}
运行结果:
- Set接口:
无序无下标,元素不可以重复,实现类有:HashSet、LinkedHashSet、TreeSet
add(E e):向集合中添加一个元素。返回值类型为:boolean
contains(Object o):判断集合中是否包含某个元素,返回值为boolean
remove()
size()
import java.util.*;
import java.util.Set;
import java.util.Map;
import java.util.Map.*;
public class Test {
public static void main(String [] args){
//set 元素无序 不重复
/**
* Set 元素无顺序 内容不可重复
* 方法全部继承自Collection接口
* 遍历:迭代遍历或for-each遍历
* */
//set中判断元素不重复值的是元素内容不重复
//Set<String> set = new HashSet<>();
Set<String> set = new LinkedHashSet<String>();
String s1 = new String("aaa");
String s2 = new String("bb");
String s3 = new String("ccc");
String s4 = new String("aaa");
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4);
for (String string:set){
System.out.println(string+"\t");
}
set.remove(s3);
System.out.println(set.contains(s4));
System.out.println(set.add("aaa"));
Iterator<String> ite =set.iterator();
while(ite.hasNext()){
System.out.println(ite.next()+'\t');
}
//Map示例
Map<String,Integer> map =new HashMap<String, Integer>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put("e",5);
System.out.println(map.get("d"));
map.put("c",33);
System.out.println(map.get("c"));
map.remove("d");
System.out.println(map);
System.out.println(map.containsKey("e"));
map.containsKey("5");
System.out.println(map.size());
System.out.println();
//遍历key,能够取出键值对
Set<String> set1 = map.keySet();
for(String string: set1){
Integer val = map.get(string);
System.out.println(string+"\t"+val+"\n");
}
System.out.println();
//遍历value
Collection<Integer> values = map.values();
for (Integer integer:values){
System.out.println(integer+"\t");
}
System.out.println();
//遍历键值对
Set<Entry<String,Integer>> set2 = map.entrySet();
for(Entry<String,Integer> entry:set2)
{
System.out.println(entry);
}
}
}
Map集合
Map结合的一个元素由一个键key和一个值value组成的
key不允许重复,value允许重复
Map集合常用方法:
V put(K key,V value)
V remove(Object key)
size()
boolean containsKey(Object key)
boolean containsValue(Object value)
import java.util.*;
import java.util.Set;
import java.util.Map;
import java.util.Map.*;
public class Test {
public static void main(String [] args){
//Map示例
Map<String,Integer> map =new HashMap<String, Integer>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put("e",5);
System.out.println(map.get("d"));
//修改值
map.put("c",33);
System.out.println(map.get("c"));
map.remove("d");
System.out.println(map);
System.out.println(map.containsKey("e"));
map.containsKey("5");
System.out.println(map.size());
System.out.println();
//遍历key,能够取出键值对
Set<String> set1 = map.keySet();
for(String string: set1){
Integer val = map.get(string);
System.out.println(string+"\t"+val+"\n");
}
System.out.println();
//遍历value
Collection<Integer> values = map.values();
for (Integer integer:values){
System.out.println(integer+"\t");
}
System.out.println();
//遍历键值对
Set<Entry<String,Integer>> set2 = map.entrySet();
for(Entry<String,Integer> entry:set2)
{
System.out.println(entry);
}
}
}
----未完待续