我的任务是编写一个记录飞行数据的程序,所以我决定制作一个飞行物体.
在此对象内是出发时间和到达时间.我不确定哪个对象最适合用于此,我希望将时间存储在24小时(hh:mm)时间内,并能够以小时和分钟计算飞行持续时间(hh:mm) ,我看过文档,我遇到了3个不同的时间对象.
1 java.util.Date
longs.2 java.sql.Date
longs进行操作.3 java.sql.Time
Time(long)构造函数.对我来说不是很有用,因为这意味着我需要在创造时间之前将每次转换为多头.TL;博士:
是否有任何库可以创建一个看起来像这样的时间
(pseudocode):
Object time = new Constructor(23,11)
Run Code Online (Sandbox Code Playgroud)
这不是"弃用"所以我不必先转换为long.或者,我必须自己制作Object?
System.nanoTime() 当编译相同的代码并针对java 7和java 8运行时,返回不同的值.
这段代码:
public class nanoTime
{
public static void main(String... args)
{
System.out.println("Found JVM: "
+ " " + System.getProperty("java.vm.vendor")
+ " " + System.getProperty("java.version")
+ " " + System.getProperty("java.vm.name")
);
System.out.println("time is "+ System.nanoTime());
}
}
Run Code Online (Sandbox Code Playgroud)
在java 7上打印出来
~ gdate +%s%N && javac7-oraclejdk nanoTime.java && java7-oraclejdk nanoTime
1480143769271605000
Found JVM: Oracle Corporation 1.7.0_80 Java HotSpot(TM) 64-Bit Server VM
time is 1480143769807547000
Run Code Online (Sandbox Code Playgroud)
这在java 8上
~ gdate +%s%N && javac nanoTime.java && java nanoTime
1480143724152650000
Found JVM: Oracle …Run Code Online (Sandbox Code Playgroud) 我很难理解为什么这样:
addItem = item => {
this.setState({ grudges: [grudge, ...this.state.grudges] });
}
Run Code Online (Sandbox Code Playgroud)
相当尴尬的实施存在.岂不
this.state.grudges.push(grudge)
Run Code Online (Sandbox Code Playgroud)
满足?
99到099和反向它=990
这是我的代码,但它没有改变number.为什么?
int number = 99;
String strI = String.format("%03d", number);
new StringBuilder(strI).reverse().toString();
number = Integer.parseInt(strI);
return number;
Run Code Online (Sandbox Code Playgroud) 我有一个ResultSet包含300K记录,我正在执行以下操作来迭代它(以及其他操作一旦收集).此过程大约需要2分钟才能完成.有没有办法优化它?
Map<String,Map<String,String>> internalMap = new HashMap<String,Map<String,String>>();
while (resultSet.next()) {
final Integer val1 = resultSet.getInt("val1");
final String val2 = resultSet.getString("val2");
final String val3 = resultSet.getString("val3");
final String val4 = resultSet.getString("val4");
final String type = resultSet.getString("type");
final String id = resultSet.getString("id");
addIntern(internalMap,val2,val1,val3,val4,type,id);
}
Run Code Online (Sandbox Code Playgroud)
以及addIntern上面引用的方法
private static void addIntern(Map<String,Map<String,String>> internalMap, String val2, Integer val1,
String val3,String val4,String type,String id) {
String key = id+"##"+val4;
if (internalMap.get(key) == null) {
internalMap.put(key, new HashMap<String,String>());
}
internalMap.get(key).put("val3", val3);
internalMap.get(key).put("val2", val2);
if("create".equals(type)){
internalMap.get(key).put("create", …Run Code Online (Sandbox Code Playgroud) 我正在尝试将列表分成尽可能大的子列表。如果列表不能以这种方式划分,我将根据需要进行处理,但是我需要获得除N本身以外的最大数目,该数目将N均分。
我写了一个非常幼稚的解决方案,但是我觉得应该有一个公式或某种东西可以在恒定时间内做到这一点。我的列表不是很大,最大大小为1000。这可能不是关键路径,但是有更好的算法吗?
public static int largestDivisor(int n){
int divisor = 0;
for (int i = 1; i <= n/2; i++)
if (n % i == 0)
divisor = i;
return divisor;
}
Run Code Online (Sandbox Code Playgroud) 在Java中我们可以修改List如下
for (Customer cust : customers) {
cust.setAge(15);
cust.setName("Customer1");
cust.setAddress("Address1");
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,可以用一个循环修改多个属性.
在JDK8中,可以用以下内容更新列表数据forEach:
customers.forEach(cust -> cust.setAge(15));
Run Code Online (Sandbox Code Playgroud)
但是我想用java 8修改多个属性.怎么做呢?
我已经实现了类似于简单时钟的代码,每次在我的课程中它应该增加1.到目前为止,这是我在主程序中的内容:
public static void main(String[] args) {
BoundedCounter counter = new BoundedCounter(60);
System.out.println("Value at start: " + counter);
int i = 0;
while (i < 10) {
counter.next();
System.out.println("Value: " + counter);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
这是"BoundedCounter"类:
class BoundedCounter {
private int value;
private int upperBound;
public BoundedCounter(int upperBound) {
this.upperBound = upperBound;
this.value = 0;
}
public void next () {
if (value++ > upperBound) {
value = 0;
} else {
value++;
}
}
public String toString() {
return …Run Code Online (Sandbox Code Playgroud) 我有一个程序,我将两个日期相互比较; 即使date1以前date2,也date1.after(date2)回来了true.时区没有效果; 这两个日期都是UTC.
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test {
public static void main(String[] args) throws Exception {
TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date1 = dateFormat.parse("2018-07-27 01:22:14.077");
Date date2 = new Timestamp(1532654534390l);
System.out.println(dateFormat.format(date1));
System.out.println(dateFormat.format(date2));
System.out.println(date1.getTime() > date2.getTime());
System.out.println(date1.after(date2));
}
}
Run Code Online (Sandbox Code Playgroud)
这输出:
2018-07-27 01:22:14.077
2018-07-27 01:22:14.390
false
true
这里发生了什么?
在我的真实程序中,date1从日志文件中解析date2并由Hibernate从数据库中检索,这会导致不同的数据类型.即使我找到了根本原因并知道如何避免这个问题,我仍然对防止这个陷阱的解决方案非常感兴趣.
我的程序提示用户输入项目的代码.不允许重复代码,因此当他输入代码时,for循环将检查它是否存在.该for循环应该break为我的病情,因为我得到的输出"项目的代码存在",但它仍然无法将项目添加到阵列中.我错过了什么?
tems[] items = new Items[200];
AddItem add = new AddItem();
Scanner s = new Scanner(System.in);
int z,x;
double c,v;
String n,m,b;
public void addItem(){
int r;
z = add.getCode();
x = add.getQuantity();
c = add.getCostPrice();
n = add.getDescription();
m = add.getDiscount();
v = add.getSellingPrice();
b = add.getStatus();
for(r = 0; r < items.length; r++){
for(int q=0; q<r; q++){
if(z==items[q].getCode()){
System.out.println("Item's code exists");
break;
}
}
if(items[r]==null){
items[r] = new Items(z, n, x, c, …Run Code Online (Sandbox Code Playgroud) java ×9
datetime ×2
int ×2
jdbc ×2
collections ×1
date ×1
division ×1
ecmascript-6 ×1
foreach ×1
hashmap ×1
increment ×1
java-8 ×1
javascript ×1
modulus ×1
nanotime ×1
reactjs ×1
reverse ×1
while-loop ×1