Java学习笔记(八)

Java集合

存放于Java.util包中,是一个存放对象的容器,但具体上,集合中存放的是多个对象的引用,对象本身还是放在堆内存中的。
集合分为三大体系:

  • Set
  • List
  • Map

HashSet

  1. 不能保证元素的排列顺序:当往HashSet集合中存入一个元素时,HashSet会调用对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的位置
  2. 不是线程安全的
  3. 不可重复:指hashCode不相同
  4. 集合元素可以为null
    在这里插入图片描述

TreeSet

TreeSet是支持SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态
在这里插入图片描述

TreeSet支持两种排序方法:

  • 自然排序(默认)
  • 自定义排序
    需要实现Comparator接口
                                  //Person实现了Comparator接口,接口多态
Set<Person> set=new TreeSet<Person>(new Person());
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 o1,Person o2){
		if(o1.age>o2.age){
			return 1;
		}else if(o1.age<o2.age){
			return -1;
		}else{
			return 0;
		}	
	}
}

ArrayList

List代表一个元素有序、且可重复的集合
在这里插入图片描述

ArrayList和Vector是List接口的两个典型实现:

  • vector很古老
  • ArrayList是线程不安全的,而Vector是线程安全的

Map

用于保存具有映射关心的数据
在这里插入图片描述

//java map的遍历

Map<String,Integer> map=new HashMap<String,Integer>();
//遍历key集合
for(Integer key:map.keySet()){
	System.out.println(key+map.get(key));
}
//遍历Entry集合
Set<Entry<String,Integer>> entrys=map.entrySet();
for(Entry<String,Integer> en: entrys){
	System.out.println(en.getKey()+en.getValue());	
}

HashMap & Hashtable
两者都是map的经典实现类

  • hashtable很古老
  • hashtable线程安全
  • hasthtable不允许使用null作为key和value
    TreeMap存储时同事会对Key进行排序,自然排序使用的是字典序

Collections

操作Set、List和Map等集合的工具类

  • Collections.reverse(List)
  • Collections.shuffle(List)
  • Collections.sort(List)
  • Collections.reverse(List,Comparator)
Student s1=new Student(14,"");
Student s2=new Student(12,"");
Student s3=new Student(13,"");
Student s4=new Student(15,"");
List<Student> stus=new ArrayList<Student>();
stus.add(s1);
stus.add(s2);
stus.add(s3);
stus.add(s4 );
Collections.sort(stus,new Student());m
//实现Comparator接口
 class Student implements Comparator<Student>{
	int age;
	String name;
	public Student()
	public Student(int age,String name){
		this.age=age;
		this.name=name;
	}
	@Override
	public int compare(Student o1,Student o2){
		if(o1.age>o2.age){
			return 1;
		}else if(o1.age<o2.age){
			return -1;
		}else{
			return 0;
		}
	}
 }
  • Collections.swap(List,int,int);
  • Collections.max/min(List,Comparator)
  • Collections.frequency(List,value)
  • Collections.replaceAll(List,oldVal,newVal)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值