List接口的特点:
1.有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
2.有索引,包含了一些带索引的方法
3.允许存储重复的元素
List<String> list = new ArrayList<>();
//使用add方法往集合中添加元素
list.add("a");
//public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
list.add(3,"itheima");
//移除列表中指定位置的元素, 返回的是被移除的元素
String removeE = list.remove(2);
//public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
String setE = list.set(4, "A");
String r = list.get(0);
List的子类
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合, [List中的方法LinkedList都是可以使用]
````
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("a");添加到第一个元素
linkedList.addLast("a");添加到最后一个元素
linkedList.getFirst();返回此列表的第一个元素。
linkedList. getLast() :返回此列表的最后一个元素。
linkedList.removeFirst() :移除并返回此列表的第一个元素。
linkedList.removeLast() :移除并返回此列表的最后一个元素。
linkedList.pop() :从此列表所表示的堆栈处弹出一个元素。
linkedList.push(E e) :将元素推入此列表所表示的堆栈。
linkedList.sEmpty() :如果列表不包含元素,则返回true。
````
Set接口
Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。
Set 集合有多个子类,这里我们介绍其中的 java.util.HashSet 、 java.util.LinkedHashSet 这两个集合。
HashSet<String> set = new HashSet<String>();
set.add("bac");//不能出现重复元素
如果我们往集合中存放自定义的对象,那么保证其唯一, 就必须复写hashCode和equals方法建立属于当前对象的比较方式
可变参数
Collections
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 5, 222, 1,2);//list添加一些元素
Collections.shuffe(list)//打乱顺序
Collections.sort(list);
comparator
如果想要集合中的元素完成排序,那么必须要实现比较器Comparable接口
ArrayList<String> list = new ArrayList<String>();
list.add("cba");
list.add("aba");
list.add("sba");
list.add("nba"); //排序方法 按照第一个单词的降序
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.charAt(0) ‐ o1.charAt(0);
}
});
Map常用子类
HashMap<String, String> map = new HashMap<String, String>();
map.put("黄晓明", "杨颖");
map.remove("黄晓明");
map.get("黄晓明");
map.getKey() :获取Entry对象中的键。
map.getValue() :获取Entry对象中的值
//1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
Set<String> set = map.keySet();
多线程
public class MyThread extends Thread{
/**** 利用继承中的特点 * 将线程名称传递 进行设置 */
public MyThread(String name){
super(name);
}
/**重写run方法 * 定义线程要执行的代码 */
public void run(){
for (int i = 0; i < 20; i++)
{ //getName()方法 来自父亲
System.out.println(getName()+i);
}
}
}
public class Demo {
public static void main(String[] args) {
System.out.println("这里是main线程");
MyThread mt = new MyThread("小强");
mt.start();
//开启了一个新的线程
for (int i = 0; i < 20; i++) {
System.out.println("旺财:"+i);
}
}
}