「java权重list」java概率和权重
本篇文章给大家谈谈java权重list,以及java概率和权重对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、请教Java集合中List的用法
- 2、java按权重选取对象,大家知道怎么做吗?
- 3、设计一种java数据结构,按照权重进行排序
- 4、我要在java中定义list
- 5、JAVA中的List的使用
- 6、java实现最大权重单增序列
请教Java集合中List的用法
你的第一种使用方式是JDK1.5才有的书写方式,叫泛型。
这确实和JDK的版本有关的。JDK1.5以前的版本(不包括1.5版本)是不支持的。如果你使用了JDK1.4的编译器,那么你的第一句是不能被编译通过的。
当你使用第一种方式书写时。那么,list中就必须储存String类型的数据。而不能储存别的类型数据了。当你使用后面的这种书写方式时,就没有类型限制了。
不过,推荐使用第一种方式,这样代码的可读性和以后的维护会比较方便。
希望对比有帮助。
java按权重选取对象,大家知道怎么做吗?
int rand = 49;//随机数
int sum= 0;
List大海 list = new ArrayList大海();//假设这是一个武将列表
for(int i=0;ilist.size();i++){
sum = list.get(i).getWeight();//大海的出现机率
if(rand=sum){
return i;//返回该武将对应的索引
}
}
设计一种java数据结构,按照权重进行排序
public enum SortBy {
Number,
Weights1,
Weights2
}
import java.util.Comparator;
public class MyComparator implements ComparatorStudent{
private SortBy sortBy;
public MyComparator (SortBy sortBy){
this.sortBy = sortBy;
}
@Override
public int compare(Student s1, Student s2) {
switch (this.sortBy) {
case Weights1:
return s1.getWeights1() - s2.getWeights1();
case Weights2:
return s1.getWeights2() - s2.getWeights2();
default:
return s1.getNumber() - s2.getNumber();
}
}
}
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class Student {
private int number;
private int weights1;
private int weights2;
public Student(int number, int weights1, int weights2) {
this.number = number;
this.weights1 = weights1;
this.weights2 = weights2;
}
public int getNumber() {
return this.number;
}
public int getWeights1() {
return this.weights1;
}
public int getWeights2() {
return this.weights2;
}
public static void main(String[] args){
final Student s1 = new Student(1, 20, 300);
final Student s2 = new Student(2, 10, 100);
final Student s3 = new Student(3, 30, 200);
final ListStudent array = new LinkedListStudent();
array.add(s1);
array.add(s2);
array.add(s3);
final ComparatorStudent numberComparator = new MyComparator(SortBy.Number);
Collections.sort(array, numberComparator);
System.out.println("sort by number");
System.out.print("Number: ");
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
final ComparatorStudent weights1Comparator1 = new MyComparator(SortBy.Weights1);
System.out.println("sort by weights1");
System.out.print("Number: ");
Collections.sort(array, weights1Comparator1);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
final ComparatorStudent weights2Comparator = new MyComparator(SortBy.Weights2);
System.out.println("sort by weights2");
System.out.print("Number: ");
Collections.sort(array, weights2Comparator);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
}
}
sort by number
Number: 1 2 3
sort by weights1
Number: 2 1 3
sort by weights2
Number: 2 3 1
我要在java中定义list
ListStudent list= new ArrayListStudent ();
Student s= new Student();
list.add(s) // 循环存、、、
Iterator it = list.iterator();
if(it.hasNext()){
for(int i= 0; ilist.size(); i++){
Student s=(Student) list.get(it.next());
}
} //循环取
JAVA中的List的使用
ListE([]内的内容可省略),与数组类似:
实例化:List[数据类型] list = new ArrayList[数据类型]();
获得集合内元素个数:list.size();
添加元素:
默认添加:list.add(e);
指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
删除元素:
返回是否删除:list.remove(e);
直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
替换元素(替换掉指定下标的元素):list.set(index,e);
取出元素:list.get(index);
清空集合:list.clear();
判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
对比两个集合中的所有元素:
两个对象一定相等:list.equals(list2);
两个对象不一定相等:list.hashCode() == list2.hashCode();
(两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。)
获得元素下标:
元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);
元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
返回Iterator集合对象:list.iterator();
将集合转换为字符串:list.toString();
截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);
将集合转换为数组:
默认类型:list.toArray();
指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);
以上为List常用的方法。
java实现最大权重单增序列
import java.util.Scanner;
public class Main {
public static int data[] = null;
public static int weight[] = null;
public static int res[] = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("输入序列个数:");
int n = 0;
n = scan.nextInt();
System.out.println("输入"+n+"个数(空格隔开):");
data = new int[n];
for (int i = 0; i n; ++i) {
data[i] = scan.nextInt();
}
System.out.println("输入"+n+"个数的权重(空格隔开):");
weight = new int[n];
for (int i = 0; i n; ++i) {
weight[i] = scan.nextInt();
}
doit(n);
int max = res[0];
int k = 0;
for (int i = 1; i n; ++i) {
if (max res[i]) {
max = res[i];
k = i;
}
}
System.out.println("最大权值:"+max);
System.out.println("序列为:");
print(k);
System.out.println();
}
public static void doit(int n) {
res = new int[n];
for (int i = 0; i n; ++i) {
res[i] = weight[i];
for (int j = 0; j i; ++j) {
if (data[i] data[j] res[i] weight[i]+res[j]) {
res[i] = weight[i]+res[j];
}
}
}
}
public static void print(int k) {
for (int i = k-1; i = 0; --i) {
if (res[i]+weight[k] == res[k]) {
print(i);
}
}
System.out.print(" "+data[k]);
}
}
输入样例:
输入序列个数:
5
输入5个数(空格隔开):
1 4 2 3 9
输入5个数的权重(空格隔开):
1 10 1 1 1
输出样例
最大权值:12
序列为:
1 4 9
注:序列可能不唯一,就输出了一组
java权重list的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java概率和权重、java权重list的信息别忘了在本站进行查找喔。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。