java之集合类型ArrayList,HashMap,HashSet
常用数据集合:List,Map,Set 这三种集合都是用来操作数据的,比如数组也是一种集合
List:ArrayList , ArrayList是list接口的其中一个实现类,调用方法前都要生成一个ArrayList对象,下面两个集合类型也是一样的
List和Set这两个接口都是继承了collection(集合)接口,collection又继承了Iterable(可迭代)接口,所以List和Set类的对象都能拿到Iterator(迭代器)方法
List和Set两个类的集合都可以通过增强for循环进行遍历
ArrayList容器支持的数据类型:引用类型
容器特点:
1.数据排列——有序性,支持索引
2.数据重复性——可重复
package com.my.packge4; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { // ArrayList<Integer> list = new ArrayList<Integer>();//int对应的引用类型是Integer(包装类型) ArrayList<String> list = new ArrayList<String>(); //查看这个list的大小,元素个数 // System.out.println(list.size()); //判空 // System.out.println(list.isEmpty()); list.add("张三"); list.add("李四"); list.add("王五"); //判断是否包含某个值 // System.out.println(list.contains("张三")); //修改数据,要换的数据的索引,和换后的值 list.set(0,"哈哈"); //判空 // System.out.println(list.isEmpty()); // System.out.println(list.size()); //通过get方法,传入下标取值 // System.out.println(list.get(1)); // list.remove("王五"); //删除list中的数据,可以通过索引或者直接输入需要删除的值 // String list_del = list.remove(0); // System.out.println(list_del); // System.out.println(list.size()); // ArrayListDemo demo = new ArrayListDemo(); for (String name:list){ System.out.println(name); } } }
Map:HashMap
容器特点:
1.以键值对形式来保存数据
2.键值不可以重复,重复时,后者键值对覆盖前者
键和值的数据类型支持:引用类型
package com.my.packge4; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; //Map以键值对形式保存数据 public class HashMapDemo { public static void main(String[] args) { HashMap<String,String> haMap = new HashMap<String,String>(); System.out.println(haMap.size()); haMap.put("name","小赵"); haMap.put("age","18"); //通过key获取值 String name = haMap.get("name"); String age = haMap.get("age"); System.out.println(name); System.out.println(age); //通过键移除数据,返回的是移除的数据对象 haMap.remove("name"); //获取所有的key,集合是Set是因为键都是唯一的,不能重复的,所以就不是list集合 Set<String> keys = haMap.keySet(); //遍历输入所有的key for (String key:keys){ System.out.println(key); } //获取所有的值 Collection<String> values = haMap.values(); //遍历输入所有的value for (String value:values){ System.out.println(value); } //第二种遍历方法 //遍历整个键值对 Set<String> keyss = haMap.keySet(); for (String key2:keyss){ String value2 = haMap.get(key2); System.out.println("key:"+key2+"value:"+value2); } //第三种遍历方法 //Entry代表的也是key,value, Map.Entry<String,String> 作为一个类型 Set<Map.Entry<String,String>> entries = haMap.entrySet(); for (Map.Entry<String,String> entri:entries){ System.out.println("key:"+entri.getKey()+"value:"+entri.getValue()); } } }
Set:HashSet
容器支持的数据类型:引用类型
容器特点:
1.数据排列——无序性
2.数据重复性——不可重复
8大数据基本类型的包装类型
package com.my.packge4; import java.util.HashSet; import java.util.Iterator; public class HashSetDemo { public static void main(String[] args) { HashSet<String> hset = new HashSet<String>(); //获取集合的大小 System.out.println(hset.size()); //添加数据到集合中,如果数据是重复,会去重 hset.add("java"); hset.add("python"); System.out.println(hset.size()); //判空 System.out.println(hset.isEmpty()); //是否包含 System.out.println(hset.contains("java")); //删除集合中的数据,因为是无序的,所以只能通过数据名删除 hset.remove("java"); //要删所有的就用clear // hset.clear(); hset.add("java"); hset.add("php"); //hashset没有提供数组get方法,所以先要把hset转成数组对象,然后再取里面的值 Object[] objects = hset.toArray(); //通过增强for循环遍历,不能在遍历时移除或者操作数据 for (Object ob:objects){ System.out.println(ob); } System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); //遍历set集合,需要导入Iterator类 Iterator<String> ite = hset.iterator(); //获取迭代器 while (ite.hasNext()){//如果集合中有数据就用hasNext System.out.println(ite.next()); } } }