java 集合总结
2021/4/9 14:25:48
本文主要是介绍java 集合总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.集合概述
- java集合存放于java.util包下,是一个用来存放对象的容器。
- 集合只能存放对象,如当存入一个int 型基本数据时,它会自动转化为integer类后存入。
- 集合存放的是多个对象的引用,对象本身还存放在堆中。
2.集合的分类,集合可以分为Set ,List, Msp三大种类:
- Set:无序,不可重复的集合。
- List: 有序,可重复的集合。
- Map: 具有映射关系的集合。
3.下面依次介绍一下各个集合:
Set集合:
HashSet:
HashSet是set集合的典型实现类,大多时候使用set集合,都是使用这一实现类。它具有如下特点:不能保证元素的排列顺序,不可重复,不是线程安全的,可以使用null. 当HashSet集合存入一个元素时,HashSet会调用HashCode()方法,获得该元素的哈希码,然后根据此码,确定该元素在HashSet表中的位置。
HashSet的基本应用如下:
public static void main(String[] args) { Set set = new HashSet();//集合初始化 set.add(1);//添加元素 set.add("a"); System.out.println(set); set.remove(1);//移除元素 System.out.println(set); set.clear();//清空集合 set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); //遍历集合 Iterator it = set.iterator(); while(it.hasNext()) { System.out.println(it.next()); } //for each迭代集合 for(Object obj : set) {//将set里的所有元素赋给obj,然后输出 System.out.println(obj); } //如果想要使集合只存储相同类型的数据,则需要用到泛型 Set<String> set1 = new HashSet<String>(); set1.add("adadad"); //set1.add(1);//错误 }HashSet
TreeSet集合:
TreeSet可以确保元素处于排列状态。TreeSet支持两种排序方式自然排序,定制排序。默认为自然排序。
TreeSet基本用法如下:
public class Test5 { public static void main(String[] args) { //使用TreeSet时必须保证使用的是同样类型的对象(因为要比较大小进行排序) Set<Integer> set = new TreeSet<Integer>(); set.add(5); set.add(2); set.add(4); set.add(1); set.add(3); System.out.println(set);//treeset从小到大自然排序 set.remove(1); set.contains(3); //set.clear(); //遍历集合 Iterator<Integer> it = set.iterator(); while(it.hasNext()) { System.out.println(it.next()); } //for each迭代集合 for(Object obj : set) {//将set里的所有元素赋给obj,然后输出 System.out.println(obj); } Person p1 = new Person("zhangsan",16); Person p2 = new Person("lisi",23); Person p3 = new Person("wangwu",15); Person p4 = new Person("zhaoliu",34); Person p5 = new Person("sunqi",19); Set<Person> set1 = new TreeSet<Person>(new Person()); set1.add(p1); set1.add(p2); set1.add(p3); set1.add(p4); set1.add(p5); //for each迭代集合 for(Person obj1 : set1) {//将set里的所有元素赋给obj,然后输出 System.out.println(obj1.name+" "+obj1.age); } } } //treeset定制排序 class Person implements Comparator<Person>{ int age; String name; public Person() { } public Person(String name,int age) { this.age = age; this.name = name; } @Override public int compare(Person arg0, Person arg1) {//正序 if(arg0.age>arg1.age) { return 1; }else if(arg0.age<arg1.age){ return -1; }else { return 0; } } }TreeSet基本用法
List集合:
list集合基本用法:
public static void main(String[] args) { //List默认按元素的添加顺序设置索引,且可以通过索引访问指定位置的元素 List<String> list = new ArrayList<String>(); list.add("a");//下标索引为0 list.add("b");//下标索引为1 list.add("c");//下标索引为2 list.add("d");//下标索引为3 list.add("d"); System.out.println(list); System.out.println(list.get(2));//通过索引获取指定元素 list.add(1, "abc"); System.out.println(list);//在指定位置添加元素 List<String> l = new ArrayList<String>(); l.add("aaa"); l.add("bbb"); l.add("ccc"); list.addAll(2, l);//在指定位置插入集合 System.out.println(list); System.out.println(list.indexOf("abc"));//获取元素第一次出现时的下标索引 list.set(0, "b"); System.out.println(list);//根据下标索引修改指定元素 List<String> sublist = list.subList(2, 4);//跟据下标索引获取一段元素的集合,包括头索引,不包括尾索引 System.out.println(sublist); }ArrayList基本用法
Map集合:
map保存具有映射关系的数据,因此Map集合里保存着两组值,一组用于保存key一组用于保存value值,其中Map和Key都可以是任何引用类型的数据。map中的Key不允许重复。
Map接口主要通过HashMap类实现,HashMap的主要用法如下:
public static void main(String[] args) { Map<String,Integer> map = new HashMap<String,Integer>(); map.put("1",6);//添加数据 map.put("2",2); map.put("3",2); System.out.println(map); System.out.println(map.get("1"));//根据key取值 map.remove("2");//根据key移除值 System.out.println(map); System.out.println(map.size());//输出map的长度 System.out.println(map.containsKey("1")); Set<String> keys = map.keySet();//获取集合的所有的key值 map.values();//获取集合的所有value值 //遍历map集合,通过map.KeySet() for(String key: keys) { System.out.println(key +" "+map.get(key)); } //遍历集合,通过map.entrySet(); Set<Entry<String,Integer>> entrys = map.entrySet(); for(Entry<String,Integer> en: entrys) { System.out.println(en.getKey() +" "+en.getValue()); } }HashMap基本用法
这篇关于java 集合总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解