Java集合类

集合类

1.特点

提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。
ArrayList
main方法里

ArrayList<String> arr = new ArrayList<>();
	arr.add("hello");//添加
	arr.add("world");//添加
	arr.add("Java");//添加
	arr.remore("world");//删除
	arr.remore(0);//删除
	arr.set(2,JavaEE);//修改
	System.out.print(arr.get(2));//返回指定索引处元素
	arr.size();//返回元素个数

2.体系结构

集合 接口和实现类

  1. Collection 单列
    1.1 List 可重复
    1.1.1 ArrayList
    1.1.2 LinkedList
    1.1.3 …
    1.2 Set 不可重复
    1.2.1 HashSet
    1.2.2 TreeSet
    1.2.3 …
  2. Map 双列
    2.1 HashMap
    2.2 …

3.Collection

  1. 创建Collection集合的对象(多态的方式)
Collection<Strinig> c = ArrayList<>();
	c.add("hello");//添加
	c.add("world");//添加
	c.add("Java");//添加
	c.remore("world");//删除
	//c.clear();//清空
	c.contains("Java");//是否包含
	c.isEmpty();//是否为空
	c.size();//长度
  1. Iterator:迭代器
    next():返回下一元素
    hasNext:有元素 返回true
Collection<Strinig> c = ArrayList<>();
	c.add("hello");//添加
	c.add("world");//添加
	c.add("Java");//添加
Iterator<String> it = c.iterator();
while(it.hasNext()){
	System.out.print(it.next());
}

4.List

  1. 特点:
  • 有序:存储和取出的顺序一致
  • 可重复:存储的元素可以重复

特有方法(指定索引)
for循环遍历

List<Strinig> c = ArrayList<>();
	c.add("hello");//添加
	c.add("world");//添加
	c.add("Java");//添加
for(int i=0; i<c.size();i++){
	System.out.print(c.get(i));
}

并发修改异常(迭代器导致,可用for替代)
ListIteeator:列表迭代器(List集合特有)
增强for

  1. 子类
    ArrayList:底层数据结构是数组,查询快,增删慢
    LinkedList:底层数据结构是链表,查询慢,增删快
    LinkedList特有方法
    addFirst()
    addLast()
    getXxx()
    removeXxx()

5.Set

  1. 特点
  • 不包含重复元素的集合
  • 没有带索引的方法,所以不能使用普通for
  1. HashSet
    对集合的迭代顺序不作任何保证
    哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值Object类中可以获取哈希值(hashCode():返回对象的哈希码值)
    特点:
    a.底层数据结构是哈希表
    b.对集合的迭代顺序不作任何保证
    c.没有带索引的方法,所以不能普通for
    d.由于Set集合,不能包含重复元素
    保证对象元素的唯一性,需要重写equals()和hashCode()方法。
  2. LinkedHashSet
    特点:
    a.哈希表和链表实现Set接口,具有可预测的迭代顺序
    b.由链表保证元素有序,存储和取出顺序一致
    c.由哈希表保证唯一,不重复
  3. TreeSet
    特点:
    a.元素有序,按照一定规则排序,取决于构造方法
    TreeSet():自然排序
    TreeSet(Comparator comparator):指定比较器排序
    b.没索引,不普通
    c.Set集合,不重复
    集合存储的是引用类型,所有的基本类型用对应的包装类类型。
    自然排序Comparable的使用:
    无参构造
    TreeSet< student > ts = new TreeSet<>();
    实现Comparable接口,重写compareTo(To)方法
    implements Comparable < Student >{
    public int compareTo(Student s){
    int num = this.age - s.age;//从小到大,1(this当前元素,s上个元素)
    num2 = num == 0 ? this.name.compareTo(s.name):num;//姓名(字符串实现了接口,本身就可以自然排序)
    return num2;
    }
    }
    比较器的使用:
    让集合构造方法接收Comparator的实现类对象,重写compare(To1,To2)方法
    TreeSet< student > ts = new TreeSet<>(new comparator(){
    public int compare(Student s1,Student s2){
    //this.age - s.age
    //s1,s2
    int num = s1.getAge() - s2.getAge();//从小到大,1(this当前元素,s上个元素)
    num2 = num == 0 ? s1.getName().compareTo(s2.getName()):num;//姓名(字符串实现了接口,本身就可以自然排序)
    return num2;
    }
    });

6.Map

特点:
Interface Map< K,V > K:键的类型,V:值的类型
将键映射到值的对象;不能包含重复的键,每个键可以映射到最多一个值

Map<String,String> map =new HashMap<String,String>();
	map.put("1","test");
	map.put("2","test2");
	map.put("3","test3");
	map.remove("3");
	//map.clear();
	map.containsKey("1");
	map.containsValue("test");
	map.isEmpty();
	map.size();
//hashMap重写了toString方法
System.out.println(map);//输出集合对象
Map<String,String> map =new HashMap<String,String>();
	map.put("1","test");
	map.put("2","test2");
	map.put("3","test3");
//根据键获取值 //未找到键返回null
map.get("1");
//获取所有键的集合
Set<String> keySet = map.keySet();
//获取所有值的集合
Collection<String> values = map.values();

遍历
方式一
键找值遍历:

Map<String,String> map =new HashMap<String,String>();
   map.put("1","test");
   map.put("2","test2");
   map.put("3","test3");
//获取所有键的集合
Set<String> keySet = map.keySet();
   for(String key : keySet){
   String value = map.get(key);
   System.out.println(key+","+value);
}

** 方式二 **
按照键值对对象找键和值遍历:
获取所有键值对对象的集合
Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
遍历键值对对象的集合,得到每一个键值对对象
用增强for实现,得到每一个键值对的对象
根据键值对对象获取键和值
用getKey()得到键
用getValue()得到值

Map<String,String> map =new HashMap<String,String>();
  map.put("1","test");
  map.put("2","test2");
  map.put("3","test3");
Set<Map.Entry<String,String>> entrySet = map.entrySet();
  for(Map.Entry<String,String> m : entrySet){
  String key = m.getKey();
  String value = m.getValue();
  System.out.println(key+","+value);
}

集合嵌套 外=》内
Collections 是针对集合操作的工具类
常用方法:
Collections.sort(list);//升序
Collections.reverse(list);//反转
Collections.shuffle(list);//洗牌

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值