本节主要介绍java的集合,主要包括List、Set和Map,其中List的子类ArrayList和LinkedList,Set的子类HashSet和TreeSet,Map的字类HashMap等,介绍了集合的常用方法,Collections工具类以及Comparable和Comparator排序方法,同时介绍了泛型和集合的嵌套使用等。
目录
3-List集合的子类ArrayList和LinkedList
6-TreeSet集合Comparable自然排序(实现该接口并重写CompareTo()方法)
7-TreeSet集合比较排序器Comparator(匿名内部类方式)
15-Collections工具类的使用(存储学生集合并排序)
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
-
- public class CollectionDemo01 {
- public static void main(String[] args) {
- List
list = new ArrayList<>() ; - list.add("java") ;
- list.add("python") ;
- list.add("c++") ;
-
- //增强for遍历
- for(String s : list){
- System.out.println(s);
- }
-
- //迭代器遍历
- Iterator
iterator = list.iterator() ; - while(iterator.hasNext()){
- System.out.println(iterator.next());
- }
-
- //for循环遍历
- for(int i=0; i
- System.out.println(list.get(i));
- }
-
- //删除指定索引的元素
- list.remove(1);
- //修改指定索引的元素
- list.set(1,"Matlab") ;
- //获得指定索引的元素
- System.out.println(list.get(1)) ;
- }
- }
2-List集合存储学生对象并遍历
- public class Student {
- private String name ;
- private int age ;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
-
- public class CollectionDemo02 {
- public static void main(String[] args) {
- Student s1 = new Student("张三", 15) ;
- Student s2 = new Student("李四", 18) ;
- Student s3 = new Student("王五", 16) ;
-
- List
list = new ArrayList<>() ; - list.add(s1) ;
- list.add(s2) ;
- list.add(s3) ;
-
- //迭代器遍历
- Iterator
iterator = list.iterator() ; - while(iterator.hasNext()){
- Student s = iterator.next() ;
- System.out.println(s.getName() + "," + s.getAge());
- }
-
- //增强for循环遍历
- for(Student student : list){
- System.out.println(student.getName() + "," + student.getAge());
- }
-
- //for循环遍历
- for(int i=0; i
- System.out.println(list.get(i).getName() + "," + list.get(i).getAge() );
- }
-
- }
- }
3-List集合的子类ArrayList和LinkedList
- import java.util.ArrayList;
- import java.util.LinkedList;
-
- public class CollectionDemo03 {
- public static void main(String[] args) {
- ArrayList
arrayList = new ArrayList<>() ; - arrayList.add("java");
- arrayList.add("python");
- arrayList.add("c++");
- for(String s : arrayList){
- System.out.println(s);
- }
-
- LinkedList
linkedList = new LinkedList<>(); - linkedList.add("Matlab") ;
- linkedList.add("r") ;
- linkedList.add("js");
- for(String s : linkedList){
- System.out.println(s);
- }
-
- //LinkedList的特有功能
- linkedList.addFirst("hello");
- linkedList.addLast("world");
- System.out.println(linkedList.getFirst());
- System.out.println(linkedList.getLast());
- linkedList.removeFirst() ;
- linkedList.removeLast() ;
-
- }
- }
4-Set集合的字类HashSet
-
- import java.util.HashSet;
- import java.util.LinkedHashSet;
-
- public class CollectionDemo04 {
- public static void main(String[] args) {
- HashSet
hashSet = new HashSet<>() ; - hashSet.add("java") ;
- hashSet.add("c") ;
- hashSet.add("python") ;
-
- for(String s : hashSet){
- System.out.println(s);
- }
-
- //LinkedHashSet,链表保证有序,HashSet保证唯一
- LinkedHashSet
linkedHashSet = new LinkedHashSet<>() ; - linkedHashSet.add("java") ;
- linkedHashSet.add("c") ;
- linkedHashSet.add("python") ;
- linkedHashSet.add("java") ;
- for(String s : linkedHashSet){
- System.out.println(s);
- }
-
- }
- }
5-Set集合字类之TreeSet
- import java.util.TreeSet;
-
- public class CollectionDemo {
- public static void main(String[] args) {
- TreeSet
treeSet = new TreeSet<>() ; - treeSet.add(20) ;
- treeSet.add(10) ;
- treeSet.add(30);
- treeSet.add(5) ;
- treeSet.add(20) ;
-
- //TreeSet集合有序且元素唯一
- for(Integer x : treeSet){
- System.out.println(x);
- }
- }
- }
6-TreeSet集合Comparable自然排序(实现该接口并重写CompareTo()方法)
- public class Student implements Comparable
{ - private String name ;
- private int age ;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
-
- @Override
- public int compareTo(Student s) {
- int num1 = this.age - s.age ;
- int num2 = num1 == 0 ? this.name.compareTo(s.name) : num1 ;
- return num2 ;
- }
- }
- import java.util.TreeSet;
-
- public class CollectionDemo05 {
- /**
- * 需求:存储学生对象并遍历,按照年龄由小到大排序,
- * 若年龄相同,按照姓名的字母顺序排序
- * @param args
- */
- public static void main(String[] args) {
- TreeSet
treeSet = new TreeSet<>() ; -
- Student s1 = new Student("zhangsan", 14) ;
- Student s2 = new Student("lisi", 14) ;
- Student s3 = new Student("wangwu", 13);
- Student s4 = new Student("maliu", 17) ;
- Student s5 = new Student("maliu", 17) ;
-
- treeSet.add(s1) ;
- treeSet.add(s2) ;
- treeSet.add(s3) ;
- treeSet.add(s4) ;
- treeSet.add(s5) ;
-
- for(Student s : treeSet){
- System.out.println(s.getName() + "," + s.getAge());
- }
-
- }
- }
7-TreeSet集合比较排序器Comparator(匿名内部类方式)
- public class Student {
- private String name ;
- private int age ;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- }
- import java.util.Comparator;
- import java.util.TreeSet;
-
- public class CollectionDemo06 {
- public static void main(String[] args) {
- TreeSet
treeSet = new TreeSet<>(new Comparator() { - @Override
- public int compare(Student s1, Student s2) {
- int num1 = s1.getAge() - s2.getAge() ;
- int num2 = num1==0 ? s1.getName().compareTo(s2.getName()) : num1 ;
- return num2 ;
- }
- }) ;
-
- Student s1 = new Student("zhangsan", 14) ;
- Student s2 = new Student("lisi", 14) ;
- Student s3 = new Student("wangwu", 13);
- Student s4 = new Student("maliu", 17) ;
- Student s5 = new Student("maliu", 17) ;
-
- treeSet.add(s1) ;
- treeSet.add(s2) ;
- treeSet.add(s3) ;
- treeSet.add(s4) ;
- treeSet.add(s5) ;
-
- for(Student s : treeSet){
- System.out.println(s.getName() + "," + s.getAge());
- }
- }
- }
8-泛型类的使用
-
- public class Generic
{ - private T t ;
-
- public T getT() {
- return t;
- }
-
- public void setT(T t) {
- this.t = t;
- }
- }
- public class CollectionDemo07 {
- public static void main(String[] args) {
- /**
- * 泛型类的好处:在定义时候不需要确实具体的方法参数类型
- * 方法调用的时候再给出具体的类型,避免多次写重载方法
- */
- Generic
generic = new Generic<>() ; - generic.setT("张三");
-
- Generic
generic1 = new Generic<>() ; - generic1.setT(18);
-
- Generic
generic2 = new Generic<>() ; - generic2.setT(true);
-
- System.out.println(generic.getT() + "," + generic1.getT() + "," + generic2.getT());
- }
- }
9-泛型方法的使用
- public class Generic1 {
- public
void show(T t){ - System.out.println(t);
- }
- }
- public class CollectionDemo08 {
- public static void main(String[] args) {
- //定义泛型方法,可以在调用的时候传递任意类型的参数
- Generic1 generic = new Generic1() ;
- generic.show("张三");
- generic.show(18);
- generic.show(true);
- }
- }
10-泛型接口的使用
-
- public interface Generic2
{ - void show(T t) ;
- }
-
- public class Generic2Impl
implements Generic2{ - @Override
- public void show(T t) {
- System.out.println(t);
- }
- }
- public class CollectionDemo09 {
- public static void main(String[] args) {
- Generic2
generic2 = new Generic2Impl<>() ; - generic2.show("张三");
-
- Generic2
generic3 = new Generic2Impl<>() ; - generic3.show(15) ;
- }
- }
11-Map集合之HashMap
- import java.util.HashMap;
- import java.util.Map;
-
- public class CollectionDemo10 {
- public static void main(String[] args) {
- Map
map = new HashMap<>() ; - map.put("张三", 18) ;
- map.put("李四", 20) ;
- map.put("王五", 19) ;
-
- System.out.println(map);
- System.out.println(map.isEmpty()); //判空操作
- System.out.println(map.size()); //集合大小
- System.out.println(map.containsKey("张三"));//是否包含键
- System.out.println(map.containsValue(18)); //是否包含值
- System.out.println(map.remove("张三")); //删除键值对
- // map.clear(); //清空集合
-
- //获取键值对的方式
- for(String key : map.keySet()){
- System.out.println(key + "," + map.get(key));
- }
-
- for(Map.Entry m : map.entrySet()){
- System.out.println(m.getKey() + "," + m.getValue());
- }
- }
- }
12-ArrayList嵌套HashMap
- import java.util.ArrayList;
- import java.util.HashMap;
-
- public class CollectionDemo11 {
- public static void main(String[] args) {
- ArrayList
arrayList = new ArrayList<>() ; - HashMap
h1 = new HashMap<>() ; - h1.put("张三", "18") ;
- h1.put("李四", "17") ;
-
- HashMap
h2 = new HashMap<>() ; - h2.put("马六", "19") ;
- h2.put("李五", "14") ;
-
- HashMap
h3 = new HashMap<>() ; - h3.put("张二", "10") ;
- h3.put("李三", "13") ;
-
- arrayList.add(h1) ;
- arrayList.add(h2);
- arrayList.add(h3);
-
- for(HashMap
hashMap : arrayList){ - for(String key : hashMap.keySet()){
- System.out.println(key + "," + hashMap.get(key));
- }
- }
-
-
- }
- }
13-HashMap嵌套ArrayList
- import java.util.ArrayList;
- import java.util.HashMap;
-
- public class CollectionDemo12 {
- public static void main(String[] args) {
-
- HashMap
hashMap = new HashMap<>(); -
- ArrayList
array1 = new ArrayList<>(); - array1.add("唐僧");
- array1.add("孙悟空") ;
- hashMap.put("西游记",array1) ;
-
- ArrayList
array2 = new ArrayList<>() ; - array2.add("武松") ;
- array2.add("鲁智深") ;
- hashMap.put("水浒传",array2) ;
-
- for(String key : hashMap.keySet()){
- ArrayList
values = hashMap.get(key) ; - System.out.println(key);
- for(String value : values){
- System.out.println(value);
- }
- }
-
- }
- }
14-HashMap统计字符串每个字符出现次数
- import java.util.HashMap;
- import java.util.Scanner;
-
- public class CollectionDemo13 {
- public static void main(String[] args) {
- HashMap
map = new HashMap<>() ; - Scanner input = new Scanner(System.in) ;
-
- String str = input.nextLine() ;
-
- // for(int i=0; i
- // char key = str.charAt(i) ;
- // if(!map.containsKey(key)){
- // map.put(key,1) ;
- // }else{
- // int count = map.get(key) + 1 ;
- // map.put(key,count) ;
- // }
- // }
- for(int i=0; i
- char key = str.charAt(i) ;
- int value = map.getOrDefault(key,0) +1 ;
- map.put(key,value) ;
- }
-
- for(char key : map.keySet()){
- System.out.println(key + "的个数是:" + map.get(key));
- }
-
- }
- }
15-Collections工具类的使用(存储学生集合并排序)
- public class Student {
- private String name ;
- private int age ;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- }
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
-
- public class CollectionDemo14 {
- public static void main(String[] args) {
- ArrayList
arrayList = new ArrayList<>() ; - Student s1 = new Student("linqinngxia", 30) ;
- Student s2 = new Student("zhangmanyu",35) ;
- Student s3 = new Student("wangzuxian", 33) ;
- Student s4 = new Student("liuyan", 33) ;
-
- arrayList.add(s1);
- arrayList.add(s2);
- arrayList.add(s3);
- arrayList.add(s4);
-
- /**
- * 按年龄有小到大排序,年龄相同时,
- * 按照姓名字母顺序排序
- */
- Collections.sort(arrayList, new Comparator
() { - @Override
- public int compare(Student s1, Student s2) {
- int num1 = s1.getAge() - s2.getAge() ;
- int num2 = num1 == 0 ? s1.getName().compareTo(s2.getName()) : num1 ;
- return num2 ;
- }
- });
-
- for(Student student : arrayList){
- System.out.println(student.getName() + "," + student.getAge());
- }
- }
- }
-
相关阅读:
聚观早报 | 网传恒大员工“停工留职”;腾讯WiFi管家停止服务
【算法训练-链表 四】【删除】:删除链表的倒数第N个节点、删除有序链表中的重复元素、删除有序链表中的重复元素II
ios ipa包上传需要什么工具
LeetCode_数学分析_中等_754.到达终点数字
Zookeeper三台机器集群搭建
【Jmeter】在进行综合场景压测时,由于不同的请求,要求所占比例不同,那如何实现呢?
什么是子域名?如何设置子域名解析?
redux的概念介绍和基础使用
Apache Kafka - 高性能原因探究
代码规范常见错误
-
原文地址:https://blog.csdn.net/nuist_NJUPT/article/details/126195946