Java有一个list集合,集合内存储的都是int类型的值,且是从小到大排序好的,如何快速判断一个值是否在list集合中存在,如果存在该值在list集合中存储的位置是什么?
时间: 2023-04-10 22:02:01 浏览: 178
可以使用二分查找算法来快速判断一个值是否在list集合中存在,并且获取该值在list集合中存储的位置。具体实现可以使用Java自带的Collections.binarySearch()方法,该方法可以在有序的list集合中查找指定的元素,并返回该元素在list集合中的索引位置。如果该元素不存在于list集合中,则返回一个负数,表示该元素可以插入到list集合中的位置。
相关问题
java创建List集合存储Person对象信息,准换set去重;最后按照pname从小到大排序打印集合全部信息
可以按照以下步骤实现:
1. 定义Person类,包含属性pname、age和gender。
```java
public class Person {
private String pname;
private int age;
private String gender;
// 构造方法、getter和setter省略
}
```
2. 创建List集合,并添加Person对象信息。
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 18, "Male"));
personList.add(new Person("Jerry", 20, "Female"));
personList.add(new Person("Tom", 22, "Male"));
personList.add(new Person("Mary", 18, "Female"));
personList.add(new Person("Lucy", 20, "Female"));
```
3. 利用HashSet去重。
```java
Set<Person> personSet = new HashSet<>(personList);
```
4. 将去重后的元素重新添加到List集合中。
```java
personList = new ArrayList<>(personSet);
```
5. 实现Comparator接口,按照pname从小到大排序。
```java
Collections.sort(personList, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getPname().compareTo(o2.getPname());
}
});
```
6. 打印集合全部信息。
```java
for (Person person : personList) {
System.out.println(person.getPname() + ", " + person.getAge() + ", " + person.getGender());
}
```
Java在一个List集合中生成20个随机整数(100以内) * 然后按照从小到大的顺序排列,排好后再将第6个-第15个元素 * 按照从大到小顺序排列,并最终输出集合
### 回答1:
下面是使用Java实现将一个包含20个随机整数(100以内)的List集合按照从小到大的顺序排序,然后输出第6到第15个元素,并将最终结果输出的代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
list.add((int) (Math.random() * 100));
}
Collections.sort(list); // 将List集合按照从小到大的顺序排序
System.out.println("从小到大排序后的List集合为:" + list);
List<Integer> subList = list.subList(5, 15); // 获取排名第6到第15的元素
System.out.println("排名第6到第15的元素为:" + subList);
Collections.sort(list, Collections.reverseOrder()); // 将List集合按照从大到小的顺序排序
System.out.println("从大到小排序后的List集合为:" + list);
}
}
```
输出结果如下:
```
从小到大排序后的List集合为:[0, 1, 2, 4, 4, 6, 9, 10, 16, 20, 21, 25, 33, 44, 47, 51, 59, 65, 72, 79]
排名第6到第15的元素为:[6, 9, 10, 16, 20, 21, 25, 33, 44, 47]
从大到小排序后的List集合为:[79, 72, 65, 59, 51, 47, 44, 33, 25, 21, 20, 16, 10, 9, 6, 4, 4, 2, 1, 0]
```
上述代码首先生成一个包含20个随机整数(100以内)的List集合,然后使用Collections.sort()方法将List集合按照从小到大的顺序排序。接着,使用List的subList()方法获取排名第6到第15的元素,并输出。然后,使用Collections.reverseOrder()方法将List集合按照从大到小的顺序排序,并输出最终结果。
### 回答2:
可以按照以下步骤来生成、排序和输出集合中的整数:
1. 创建一个空的List集合,命名为numbers。
2. 使用一个循环生成20个随机整数,并将它们添加到numbers集合中。生成的整数在1到100之间,可以使用Random类的nextInt()方法实现。
3. 调用Collections类的sort()方法对numbers集合进行排序,使其按照从小到大的顺序排列。
4. 从numbers集合中截取第6个到第15个元素(包括第6个和第15个元素),并将这个子集合命名为subList。
5. 调用Collections类的sort()方法对subList集合进行排序,使其按照从大到小的顺序排列。
6. 最后,在控制台上逐个输出numbers集合中的元素,可以使用一个循环遍历numbers集合并依次输出每个元素。
以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<Integer>();
Random random = new Random();
for (int i = 0; i < 20; i++) {
int num = random.nextInt(100) + 1;
numbers.add(num);
}
Collections.sort(numbers);
List<Integer> subList = numbers.subList(5, 15);
Collections.sort(subList, Collections.reverseOrder());
for (int num : numbers) {
System.out.println(num);
}
}
}
```
运行以上代码,将输出按要求排列的集合中的整数。输出的结果是从小到大排列的,第6个到第15个元素是按照从大到小的顺序排列的。
### 回答3:
实现上述要求的Java代码如下:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = generateRandomNumbers(20, 100);
System.out.println("排序前的集合:");
System.out.println(numbers);
Collections.sort(numbers);
System.out.println("排序后的集合:");
System.out.println(numbers);
List<Integer> subList = numbers.subList(5, 15);
Collections.sort(subList, Collections.reverseOrder());
System.out.println("排序后的子集合:");
System.out.println(subList);
}
private static List<Integer> generateRandomNumbers(int count, int max) {
Random random = new Random();
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < count; i++) {
int randomNumber = random.nextInt(max);
numbers.add(randomNumber);
}
return numbers;
}
}
```
该代码首先调用`generateRandomNumbers`方法生成20个随机整数,并限制在100以内。然后通过`Collections.sort`方法对集合进行升序排列,并输出排序前的集合。
接下来,使用`numbers.subList`方法截取第6个到第15个元素,并将其存储在`subList`变量中。再次使用`Collections.sort`方法对`subList`进行降序排列,并输出排序后的子集合。
最终,程序将输出排序后的整个集合、排序后的子集合的结果。
阅读全文