Java学习1:Collection小结

前几天看到一个用Set来存放对象的demo,令我难受至极,于是乎我决定重新复习一遍Collection接口。

容器继承了Collection接口,容器大致的种类有:

(1)List
(2)Set
(3)Map
(4)Stack
(5)Properties

以下就简单总结一下用的较多的前三种

1、List:List的属性是可重复且有序的(就是说你放进去是怎样的顺序,出来也是怎样的顺序),可利用get方法获取属性以及对象

(1)ArrayList:底层是数组,因此查询以及赋值较快,而增删较慢。
(2)LinkedList:底层是链表,增删较快,而查询和赋值较慢。
(3)Vector:和ArrayList一样底层是数组,但Vector是线程安全的。

2、Set:Set的属性是不可重复且无序的,Set不允许直接对属性操作

(1)HashSet:底层是哈希表
(2)TreeSet:底层是二叉树

3、Map:存储键值对

(1)HashMap:底层是哈希表,线程不安全,允许null值
(2)HashTable:底层是哈希表,线程安全,不允许null值

4、迭代器的使用:利用Iterator获取迭代对象

public class JavaCollectDemo {
	public static void main(String[] args) {
		Set<String> all = Set.of("Hello", "ScauJava", "Scau"); // 创建Set集合
		Iterator<String> iter = all.iterator(); // 实例化Iterator接口对象
		while (iter.hasNext()) { // 集合是否有数据
			String str = iter.next(); // 获取每一个数据
			System.out.print(str + "、"); // 输出数据
		}
	}
}

迭代器遍历map的方法:可看成先用entrySet()方法将map转为Set类,再构造迭代器

Set<Entry<Integer,String>> ss = map.entrySet();
		for(Iterator<Entry<Integer,String>> iter = ss.iterator();iter.hasNext();) {
			Entry<Integer,String> temp = iter.next();
			System.out.println(temp);
		}

迭代器遍历map的第二种方法

Set<Integer> ks = map.keySet();
		for(Iterator<Integer> iter = ks.iterator();iter.hasNext();) {
			Integer temp = iter.next();
			System.out.println(temp);
		}

5、使用 Stream 进行数据采集

public class JavaCollectDemo {
	public static void main(String[] args) throws Exception {
		List<String> all = new ArrayList<String>(); // 实例化List集合
		Collections.addAll(all, "Java", "JavaScript", "JSP", 
			"Json", "Python", "Ruby", "Go"); // 集合数据保存
		Stream<String> stream = all.stream(); // 获取Stream接口对象
		// 将每一个元素全部变为小写字母,而后查询是否存在有字母“j”,如果存在则进行个数统计
		System.out.println(stream.filter((ele) -> 
			ele.toLowerCase().contains("j")).count());
	} 
}

6、重写comparable接口

public class SortUtil {

	public static void sortInfoById(List<Student> stu) {
		Collections.sort(stu,new Comparator<Student>(){
			@Override
			public int compare(Student o1, Student o2) {
				Student s1 = (Student)o1;
				Student s2 = (Student)o2;
				if(s1.id>s2.id) 
					return 1;
				else if(s1.id<s2.id) 
					return -1;
				else
					return 0;
			}
		});
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值