List集合:有序 可重复 有索引
ArrayList集合常用方法
public static void main(String[] args) {
//创建一个ArrayList集合
//List集合 有序 可重复 有索引
List<String> list = new ArrayList<>();
list.add("java");
list.add("java");
list.add("MySql");
list.add("MySql");
//2.在某个索引位置插入元素
list.add(3,"你好");
System.out.println(list);
//3.根据索引删除元素 ,返回被删除的值
list.remove(2);
System.out.println(list);
//4.根据索引获取元素
System.out.println(list.get(3));
//修改索引处位置的元素
System.out.println(list.set(2, "python"));
System.out.println(list);
}
LinkedList常用方法
public static void main(String[] args) {
//创建一个LinkedList集合
LinkedList list = new LinkedList();
//向集合中添加元素
list.add("爱");
list.add("中国");
System.out.println(list);
//在集合第一个位置处添加元素
list.addFirst("我");
// list.push("我");//同addFirst效果一样
System.out.println(list);
//在集合最后一个位置处添加元素
list.addLast("~~~");
System.out.println(list);
//返回集合中第一个元素
System.out.println(list.getFirst());
//返回集合中最后一个元素
System.out.println(list.getLast());
//删除集合中第一个元素
list.removeFirst();
// list.pop();//同removeFirst效果一样
System.out.println(list);
//删除集合中最后一个元素
list.removeLast();
System.out.println(list);
}
Set集合:
HashSet集合:
特点:HashSet 无序 不重复 无索引 根据哈希表的算法来判断是否重复,需要重写equals方法和hashcode方法
创建一个学生类:
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
@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) && Objects.equals(sex, student.sex);
}
@Override
public int hashCode() {
return Objects.hash(name, age, sex);
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
private String sex;
}
判断学生类HashSet集合是否重复
public static void main(String[] args) {
//HashSet 无序 不重复 无索引 根据哈希表的算法来判断是否重复,需要重写equals方法和hashcode方法
Set<Student> sets = new HashSet<>();
Student s1 = new Student("张三",18,"男");
Student s2 = new Student("张三",18,"男");
Student s3 = new Student("李四",20,"男");
sets.add(s1);
sets.add(s2);
sets.add(s3);
System.out.println(sets);
}
输出结果:[Student{name='李四', age=20, sex='男'}, Student{name='张三', age=18, sex='男'}]
LinkedSet集合:
特点:LinkedSet 有序 不重复 无索引
//LinkedSet 有序 不重复 无索引
public static void main(String[] args) {
Set<String> sets = new LinkedHashSet<>();
sets.add("java");
sets.add("java");
sets.add("MySql");
sets.add("MySql");
sets.add("go");
sets.add("python");
sets.add("C++");
sets.add("HTML");
sets.add("SpringBoot");
sets.add("Mybatis");
System.out.println(sets);
}
TreeSet集合:
特点:TreeSet集合 可排序 不重复 无索引
创建一个苹果类:
public class Apple implements Comparable<Apple>{
private String name;
private String color;
private double price;
private int weight;
public int getWeight() {
return weight;
}
public Apple(String name, String color, double price, int weight) {
this.name = name;
this.color = color;
this.price = price;
this.weight = weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public Apple() {
}
public Apple(String name, String color, double price) {
this.name = name;
this.color = color;
this.price = price;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
", price=" + price +
", weight=" + weight +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
//第一种排序方式:实现Comparable接口重写compareTo方法定义规则
@Override
public int compareTo(Apple o) {
//自定义按照重量排序
return this.weight - o.weight;
}
}
排序方式:两种方式自定义排序规则
1.实现Comparable接口重写compareTo方法定义规则
2.集合自带比较器对象进行规则定制
public static void main(String[] args) {
Set<Apple> sets = new TreeSet<>(new Comparator<Apple>() {
//第二种方式排序,集合自带比较器对象进行规则定制
@Override
public int compare(Apple o1, Apple o2) {
// //自定义按照价格升序
// return Double.compare(o1.getPrice() , o2.getPrice());
//自定义按照价格降序
return Double.compare(o2.getPrice() , o1.getPrice());
}
});
Apple a1 = new Apple("红苹果","红色",10.9,500);
Apple a2 = new Apple("绿苹果","绿色",9.9,400);
Apple a3 = new Apple("黄苹果","黄色",11.9,300);
sets.add(a1);
sets.add(a2);
sets.add(a3);
System.out.println(sets);
}