- List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素);
- 移除指定索引的元素 remove(索引)
- 修改指定索引的元素 set(索引,修改的元素)
package com.List集合; import java.util.ArrayList;
import java.util.List; public class Demo01 { public static void main(String[] args) {
/*
* add(索引,插入的元素)方法
*/
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add(1, "q");
System.out.println(list); /*
* 元素修改set(索引,修改的元素)
*/
list.set(0, "w");
System.out.println(list); list.remove(0);
System.out.println(list);
list.remove("b");
System.out.println(list); } }- ArrayList集合 在这里我就不多介绍了 (查找元素快,增删慢)
- LinkedList集合 (查找元素慢,增删快)
- LinkedList集合几个方法需要掌握
- addFrist() 在集合的首部添加元素
- addLast() 在集合的尾部添加元素
- removeFirst() 移除集合首部的元素
- removeLast() 移除集合尾部的元素
- getFrist() 获取集合首部的元素
- getLast() 获取集合尾部的元素
- isEmpty() 判断集合是否为空
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("a");
linkedList.add("b");
linkedList.add("a"); linkedList.addFirst("0");
linkedList.addLast("9");
System.out.println(linkedList); linkedList.removeLast();
System.out.println(linkedList);
linkedList.removeFirst();
System.out.println(linkedList); String first = linkedList.getFirst();
System.out.println(first);
String last = linkedList.getLast();
System.out.println(last); boolean b = linkedList.isEmpty();
System.out.println(b);- Set接口(无序,不重复的)
- 我们直接学习HashSet接口
- HashSet当你存储相同元素时,是添加不进去的 他会判断集合中是否存在,这里我们用自定义的引用类型说明
-
package com.Set集合; public class Person {
private String name;
private int 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;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
} }这里注意我们需要重写HashClod方法与equlas()方法 当然在打印的时候需要重写toString()方法
public static void main(String[] args) {
HashSet<Person> hashSet = new HashSet<>();
hashSet.add(new Person("张三",12));
hashSet.add(new Person("李四",12));
hashSet.add(new Person("张三",12));
hashSet.add(new Person("张三",21));
// System.out.println(hashSet);
Iterator<Person> iterator =hashSet.iterator();
while(iterator.hasNext()){
Person next = iterator.next();
System.out.println(next);
}
}
}
//执行结果为:张三 12
李四 12
张三 21- 这就是HashSet的去重复元素的功能 结果是无序的
- Set接口下还有一个LinkedHashSet集合,这是弥补了Set无序的缺点
public class Demo02_LinkedHashSet {
public static void main(String[] args) {
LinkedHashSet<String> hashSet = new LinkedHashSet<>();
hashSet.add("a");
hashSet.add("b");
hashSet.add("c");
hashSet.add("d");
//增强for遍历
for (String string : hashSet) {
System.out.print(string+" ");
}
//迭代器遍历
Iterator<String> iterator = hashSet.iterator();
while(iterator.hasNext()){
String str = iterator.next();
System.out.println(str);
} System.out.println(hashSet);
}