先上代码
package com.NicMark.collection_.List_;
import java.util.ArrayList;
import java.util.List;
public class ListMethod_ {
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三");
list.add("黄");list.add("烂");list.add("张");
//插入
//void add(int index,Object element);
list.add(1,"hzh");
System.out.println(list);//讲元素插入到一个位置,该位置及靠后元素都往后移动一位
List list2 = new ArrayList();
//加入一个数组的内容
list2.add("kac");
list2.add("ggg");
list.addAll(1,list2);
//get(int index)
//int indexOf(Object obj):返回obj在集合中首次出现的位置
System.out.println(list.indexOf("Tom"));//不存在则返回负一
//删除remove
list.remove(0);
//替换 将某个位置的元素替换成ele set(index x, Object ele)
list.set(2,2);
System.out.println(list);
//返回从fromIndex到toIndex位置的子集合 List subList(int fromIndex, int toIndex)
List returnList = list.subList(0,2);
System.out.println(returnList);//取值范围[fromIndex,toIndex)
}
}
八嘎,在这个之前,先整理下在数组中添加对象的一些实现方法。
package com.NicMark.collection_.List_;
import java.awt.print.Book;
import java.util.ArrayList;
import java.util.List;
public class ListExercise02 {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Book_("啊啊啊","aaa",123));
list.add(new Book_("表白吧","bbb",5423));
list.add(new Book_("踩踩踩","ccc",133));
list.add(new Book_("单独的","ddd",41));
list.add(new Book_("呃呃呃","eee",53));
//对集合排序
sort(list);
//遍历
for(Object book:list){
System.out.print(book);
}
}
//静态方法
public static void sort(List list){
for(int i = 0;io2.getPrice()){
list.set(j,o2);
list.set(j+1,o1);
}
}
}
}
}
package com.NicMark.collection_.List_;
public class Book_ {
private String name;
private String author;
private double price;
public Book_(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return
"n名称:'" + name +
"tt价格" + price +
"tt作者" + author;
}
}
你看啊,那个sort,为什么要Book_ o1 = (Book_)list.get(j);呢?因为这是强制转换啊!为的是可以调用Book_中的方法,进行比较。
那么,我们都知道,在创建对象的过程中,由于对象的地址不相同,我们将会产生一个数组中有相同name或者其他信息的对象。
在这之前,还是讲下
HashSet会根据Hash算法,返回一个随机的地址,这个地址跟HashSet数组中的地址匹配,进而将数据放进去。
如果是普通的类似于String,int之类的,它就是它,在第二次或第n次插入它时,它将添加失败,add()将会返回false
但对象他不一样了啊!这个狗他叫mak,那个狗它也叫Mak,他们虽然一个名字,但他们是两只不同的狗啊!
所以就会发生不如上一样的情况,即出现两只不一样的同名狗。
那么我们默认规则当名字相同时,他就是一条狗!
所以我们要重写equals()与HashCode()函数,直接alt+insert
点一下,会呈现
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return age == employee.age && name.equals(employee.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
酱紫。
然后嘞,他们比较过后发现我超!名字相同,是同一条狗!
所以它的第二次添加就加不进去了!
[Employee{name='msmli', age=18}, Employee{name='milan', age=28}]
结果如上
结束!撒由那拉!!



