- import java.awt.print.PrinterGraphics;
- import java.util.*;
-
- public class Test {
- public static void main(String[] args) {
- Set
a = new HashSet<>(); - a.add("aaa");
- a.add("bbb");
- a.add("aaa");
- System.out.println(a);
- HashSet
integers = new HashSet<>(); - //Integer 是int的封装类,Integer类型是表示集合里面的内容都是Int类型的
- integers.add(10);
- integers.add(20);
- integers.add(10);
- System.out.println(integers);
- //集合中的内容不重复
- }
- }
- import java.awt.print.PrinterGraphics;
- import java.util.*;
-
- public class Test {
- public static void main(String[] args) {
- Set
students = new HashSet<>(); - Student s1 = new Student("刘备",50);
- students.add(s1);
- students.add(new Student("关羽",48));
- System.out.println(students);
- }
- }
- import java.util.Objects;
-
- public class Student {
-
- private String name;
- private int age;
-
- //重写toString方法
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- //重写equals(用来比较和判断重复的)和HashCode方法(这个方法是返回哈希地址)
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Student student = (Student) o;
- return age == student.age && Objects.equals(name, student.name);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(name, age);
- }
-
- //空构造
- public Student() {
- }
-
- //满构造
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- //get和set方法
- 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;
- }
- }
- import java.awt.print.PrinterGraphics;
- import java.util.*;
-
- public class Test {
- public static void main(String[] args) {
- LinkedHashSet
stringss = new LinkedHashSet(); - stringss.add("a");
- stringss.add("b");
- stringss.add("a");
- System.out.println(stringss);
- }
- }
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
- import java.util.Set;
-
- public class Test {
- public static void main(String[] args) {
- ArrayList
strings = new ArrayList<> - ();
- strings.add("a");
- strings.add("a");
- strings.add("b");
- strings.add("b");
- strings.add("c");
- System.out.println("a:" +
- listTest(strings,"a"));
- System.out.println("b:" +
- listTest(strings,"b"));
- System.out.println("c:" +
- listTest(strings,"c"));
- }
-
- public static int listTest(ArrayList
strings, String c) { - //形参列表 形参类型 形参名,形参类型,形参名
- //ArrayList
代表一个全是String类型的列表类型 - int count = 0;
- for (String s : strings) {
- if(s.equals(c)) {
- count++;
- }
- }
- return count;
- }
- }
- import java.util.*;
-
- public class Test {
- public static void main(String[] args) {
- Collection
strings = new ArrayList<>(); - strings.add("a");
- strings.add("a");
- strings.add("b");
- strings.add("c");
- System.out.println(strings);
- Iterator it = strings.iterator();//创建集合迭代器
- Set
set = new HashSet<>();//创建一个set集合的迭代器 - set.add(10);//添加元素
- set.add(20);
- Iterator it1 = set.iterator();
- while(it.hasNext()){//判断是否有下一个元素
- System.out.println(it.next());//输出strings集合的元素
- System.out.println(it1.next());
- }
- }
- }
这样就很方便,不需要把所传参数和函数接收参数的类型对应,将参数传到函数后可做出相应操作。
- import java.util.*;
-
- public class Test {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- printMessage(a,b);
- int[] arr = {1,2,3};
- printMessage(arr);
- }
-
- private static void printMessage(int... num) {
- for(int t:num)
- System.out.println(t);
- }
-
- }
我们在定义集合时,实际上时可以放任意对象的,这是因为集合不身存放的是Object类型,由于任意对象都是Object对象的子类,用以程序不会报错。
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Iterator;
-
- public class Test {
- public static void main(String[] args) throws IOException {
- Collection a=new ArrayList();
- a.add(10);
- a.add("abc");
- Iterator iterator = a.iterator();
- while(iterator.hasNext())
- System.out.println(iterator.next());
- }
- }
但是当我们在取出每一个对象,并且对每个对象进行相应的操作,这时必须采用类型转换。这是因为尽管Collection能够存储任意对象,但实际上通常Collection只存储同一类型对象。因此在IDK5之后,新增了泛型(Generic)语法,让你在设计API时可以指定类或方法支持泛型,这样我们使用API的时候也变得更为简洁。
- public class MyGenericclass
{ - //没有MVP类型,在这里代表未知的一种数据类型 未来传递什么就是什么类型
- private MVP mvp;
- public void setMVP(MVP mvp){
- this.mvp = mvp;
- }
- public MVP getMVP(){
- return mvp;
- }
- }