JAVA中数组和集合排序的小方法

本文介绍了如何使用双层for循环对Java中的数组和集合进行排序。通过对前后元素的比较并交换位置实现简单排序,适用于初学者理解基本排序原理。

学习过程中,经常需要对集合或者数组中的元素进行排序,这里总结如下:

思想:先获取元素,然后进行比较,最后换位置

代码如下:

package sort;

import java.util.ArrayList;
import java.util.List;

public class Sort {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(5);
		list.add(4);
		list.add(3);

		// 对集合中的元素进行排序
		// 外层for循环规定循环的次数,内层for循环来获取前后元素进行比较
		for (int i = 0; i < list.size() - 1; i++) {
			for (int j = 0; j < list.size() - 1; j++) {
				// 利用集合的set和get方法比较后进行换位置
				int a = list.get(j);
				int b = list.get(j + 1);
				if (a > b) {
					list.set(j, b);
					list.set(j + 1, a);
				}
			}
		}
		System.out.println(list);

		
		// 对数组中的元素进行排序
		int[] arr = { 1, 2, 5, 4, 3 };

		// 通过双层for循环来获取前后元素
		for (int x = 0; x < arr.length; x++) {
			for (int y = x + 1; y < arr.length; y++) {
				if (arr[x] > arr[y]) {
					// 采用中间量来转换位置
					int temp;
					temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}
			}
		}

		for (int a = 0; a < arr.length; a++) {
			System.out.println(arr[a]);
		}

	}

}

Java编程里,数组集合都是用于存储管理一组数据的数据结构,但它们既有联系又有区别。 数组集合存在一定的关联,它们都可用于存储多个元素。并且在实际编程中,数组集合之间可以相互转换。例如,可以将数组的元素添加到集合中,也能把集合中的元素存储到数组里。 二者也存在明显的区别。数组的长度是固定的,一旦创建就无法改变其容量;而集合的长度是可变的,能根据需求动态扩展容量,还提供了更多成员方法以满足更多需求[^2]。 在使用场景上,数组适合处理元素数量固定且对性能要求较高的情况。例如,创建并初始化字符串数组`String[] names = {"Alice", "Bob", "Charlie"}`,其长度为3;创建一个长度为 5 的整数数组`int[] arr = new int[5]`,可通过索引添加获取元素,还能使用`arr.length`获取数组长度[^5]。集合则更适用于元素数量不确定,需要频繁进行插入、删除操作的场景。像List集合,存放的对象有序且可重复,关注索引,有一系列索引相关的方法,查询速度快,但插入删除数据时会伴随后面数据的移动,所以插入删除速度慢[^4]。 集合还有多种具体类型,Collection代表单列集合,包含ListSet接口。List接口按元素进入顺序排序,元素可重复,其实现类有ArrayList(数组实现,线程不安全)、LinkedList(链表实现,线程不安全)、Vector(数组实现,线程安全);Set接口元素不可重复,实现类有HashSet(数组实现)、TreeSet(二叉树实现,元素自动排序)。Map代表双列集合(键值对),实现类有HashMap(数组加链表实现,线程不安全)、Hashtable(线程安全)、ListedhashMap(key有序)、TreeMap(红黑树实现对所有key排序)[^3]。 ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayAndCollection { public static void main(String[] args) { // 数组集合 String[] names = {"Alice", "Bob", "Charlie"}; List<String> nameList = new ArrayList<>(Arrays.asList(names)); // 集合数组 List<Integer> numberList = new ArrayList<>(); numberList.add(1); numberList.add(2); numberList.add(3); Integer[] numberArray = numberList.toArray(new Integer[0]); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值