java---集合类---LIST

java类库包括接口、抽象类、实现类,大多位于java.util包下。
Collection接口**(排序、查找,允许重复的对象)**
List接口及其实现类**(允许有重复,并引入位置索引)**
Set接口及其实现类**(set接口继承collection,保证元素不重复)**
Map接口及其实现类**(键值对,比如学号和生日绑定、小白鼠的帽子颜色和体重绑定)
**
java---集合类---LIST_第1张图片

2.集合类库的相关概念
(1)集合:集合是一系列对象的聚集(是一个大对象)
(2)集合元素:集合对象中每个元素(是一个元素)
(3)集合包的导入:import java.util*
3.对集合类有两大类操作方法
(1)集合元素的操作
增删改查,遍历
(2)对集合的操作
交,并,差
3.
Collection是java集合框架的根接口,该接口的方法:
(1)int size();//返回元素的个数
(2)boolean empty();//判断集合是否为空
(3)boolean contains(Object o) //判断集合是否包含元素o

(4)boolean add(Object o)//向集合中添加元素,添加成功返回true,否则返回false
插入操作
(5)boolean remove(Object o)//删除集合中元素,删除成功返回true,否则返回false
//删除操作
(6)boolean containsAll(Collection c)//判断当前集合是否包含c中所有元素
(7)boolean addAll(Collection c)//将c中所有元素添加到当前集合中
(8)boolean removeAll(Collection c)//删除当前集合中也被c包含的所有元素
(9)boolean retainAll(Collection c)//仅保留当前集合中也被c包含的所有元素
4.List接口
List接口继承自Collection元素可以重复,从元素的索引(从0开始的整数)来访问元素
List接口实现类有两种:
(1)ArrayList:基于顺序存储方式的实现类数组,连续存储
(2)LinkedList:链式存储
(3)List常用方法
void add(int index,Object obj)//添加,索引从0开始
boolean addall(int index,Collection coll);//用指定索引添加所有对象合并
Object get(int i)//返回给定位置的元素
int indexOf(Object o)//返回对象o在列表中首次出现的位置
Object remove(int index)//删除
List subList(int fromIndex,int toIndex)//前闭后开,截取子串
5.利用ArrayList类实例化List集合
List<集合元素类型> list1=new ArrayList<集合元素类型>();
(1)利用LinkedList类实例化List集合
List<集合元素类型》list2=new LinedList<集合元素类型>();
(2)ArrayList的构造方法
ArratList();//创建一个空的ArratList对象
(3)ArrayList常用方法
boolean add(Object obj)//将元素追加到列表的尾部
void add(int index,Object obj)//指定元素插入列表指定位置
boolean contains(Object o)//表中包含指定元素,返回true
Object get(int i)//返回给定位置的元素
int size();//返回对象的个数

(4)来一波例子吧~~~~ 文字看着太头疼,还是用代码说话。
Example 1:
java---集合类---LIST_第2张图片
思路:涉及到指针,循环移动, 所以用链表 .关键抓住m是代表最后的m个数,把最后的m个数抓到前面当头头,其他元素就往后挪挪

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class main6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入总的个数
		int m = sc.nextInt();// 输入最后的m个数
		List<Integer> lis1 = new LinkedList<Integer>();
		for (int i = 0; i < n; i++) {
			lis1.add(sc.nextInt());
			// 往链表的对象lis1里添加元素

		}
		for (int i = 0; i < m; i++) {
			lis1.add(0, lis1.remove(n - 1));// 删尾添头
		}
		for (Integer i : lis1)
		// 加强的for循环 遍历新的lis1里面个各个类型为Integer的元素
		{
			System.out.print(i + " ");
		}
	}

}

Example 2:

java---集合类---LIST_第3张图片
java---集合类---LIST_第4张图片
代码:

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
//约瑟夫问题,链表处理 (也可实现队列问题)

public class main7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    while(true)
    {
    	int m=sc.nextInt();//m只猴子
    	int n=sc.nextInt();//报数报到n
    	if(m==0&&n==0){
    		break;
    	}
    	List<Integer> lis1=new LinkedList<Integer>();
    	for(int i=1;i<=m;i++)
    	{
    		lis1.add(i);
    	}

    
    	for (int i = 0; i < m - 1; i++) {
            for (int j = 0; j < n - 1; j++) {
                lis1.add(lis1.remove(0));
            }
            lis1.remove(0);
        }
        System.out.println(lis1.get(0));
    }


}
}

你可能感兴趣的:(java,java,链表,列表,队列)